本文整理汇总了C#中System.Data.Entity.Core.Metadata.Edm.EntityContainer.AddFunctionImport方法的典型用法代码示例。如果您正苦于以下问题:C# EntityContainer.AddFunctionImport方法的具体用法?C# EntityContainer.AddFunctionImport怎么用?C# EntityContainer.AddFunctionImport使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Entity.Core.Metadata.Edm.EntityContainer
的用法示例。
在下文中一共展示了EntityContainer.AddFunctionImport方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitEdmEntityContainer_visits_function_imports
public void VisitEdmEntityContainer_visits_function_imports()
{
var functionPayload =
new EdmFunctionPayload
{
IsFunctionImport = true
};
var functionImport =
new EdmFunction("f", "N", DataSpace.CSpace, functionPayload);
var container = new EntityContainer("C", DataSpace.CSpace);
container.AddFunctionImport(functionImport);
var visitorMock =
new Mock<EdmModelVisitor>
{
CallBase = true
};
visitorMock.Object.VisitEdmModel(new EdmModel(container));
visitorMock.Verify(v => v.VisitFunctionImports(container, It.IsAny<IEnumerable<EdmFunction>>()), Times.Once());
visitorMock.Verify(v => v.VisitFunctionImport(functionImport), Times.Once());
}
示例2: SetupFooFunction
private static void SetupFooFunction(MetadataWorkspace metadataWorkspace)
{
var metadataWorkspaceMock = Mock.Get(metadataWorkspace);
var entityType = (EdmType)new EntityType(
"ReturnedEntity", "FooNamespace", DataSpace.CSpace,
new[] { "key" }, new EdmMember[] { new EdmProperty("key") });
var collectionTypeMock = new Mock<CollectionType>(entityType)
{
CallBase = true
};
metadataWorkspaceMock.Setup(m => m.TryDetermineCSpaceModelType(It.IsAny<Type>(), out entityType))
.Returns(true);
var entityContainer = new EntityContainer("Bar", DataSpace.CSpace);
metadataWorkspaceMock.Setup(m => m.TryGetEntityContainer(It.IsAny<string>(), It.IsAny<DataSpace>(), out entityContainer))
.Returns(true);
var functionImport = new EdmFunction(
"Foo", "Bar", DataSpace.CSpace,
new EdmFunctionPayload
{
IsComposable = false,
IsFunctionImport = true,
ReturnParameters = new[]
{
new FunctionParameter(
EdmConstants.ReturnType,
TypeUsage.Create(collectionTypeMock.Object),
ParameterMode.ReturnValue),
}
});
entityContainer.AddFunctionImport(functionImport);
entityContainer.AddEntitySetBase(new EntitySet("Foo", "", "", "", (EntityType)entityType));
var edmItemCollection = (EdmItemCollection)metadataWorkspace.GetItemCollection(DataSpace.CSpace);
var storeItemCollection = (StoreItemCollection)metadataWorkspace.GetItemCollection(DataSpace.SSpace);
var containerMappingMock = new Mock<EntityContainerMapping>(entityContainer);
FunctionImportMapping targetFunctionMapping = new FunctionImportMappingNonComposable(
functionImport, functionImport, new List<List<FunctionImportStructuralTypeMapping>>(), edmItemCollection);
containerMappingMock.Setup(
m => m.TryGetFunctionImportMapping(
It.IsAny<EdmFunction>(), out targetFunctionMapping)).Returns(true);
var storageMappingItemCollection = new Mock<StorageMappingItemCollection>(
edmItemCollection, storeItemCollection, new string[0])
{
CallBase = true
};
storageMappingItemCollection.Setup(m => m.GetItems<EntityContainerMapping>())
.Returns(
new ReadOnlyCollection<EntityContainerMapping>(
new List<EntityContainerMapping>
{
containerMappingMock.Object
}));
metadataWorkspaceMock.Setup(m => m.GetItemCollection(DataSpace.CSSpace, It.IsAny<bool>()))
.Returns(storageMappingItemCollection.Object);
}
示例3: ConvertToEntityContainer
/// <summary>
/// Converts an entity container from SOM to metadata
/// </summary>
/// <param name="element">The SOM element to process</param>
/// <param name="providerManifest">The provider manifest to be used for conversion</param>
/// <param name="convertedItemCache">The item collection for currently existing metadata objects</param>
/// <param name="newGlobalItems">The new GlobalItem objects that are created as a result of this conversion</param>
/// <returns>The entity container object resulting from the convert</returns>
private static EntityContainer ConvertToEntityContainer(
Som.EntityContainer element,
DbProviderManifest providerManifest,
ConversionCache convertedItemCache,
Dictionary<Som.SchemaElement, GlobalItem> newGlobalItems)
{
// Creating a new entity container object and populate with converted entity set objects
var entityContainer = new EntityContainer(element.Name, GetDataSpace(providerManifest));
newGlobalItems.Add(element, entityContainer);
foreach (var entitySet in element.EntitySets)
{
entityContainer.AddEntitySetBase(
ConvertToEntitySet(
entitySet,
providerManifest,
convertedItemCache,
newGlobalItems));
}
// Populate with converted relationship set objects
foreach (var relationshipSet in element.RelationshipSets)
{
Debug.Assert(
relationshipSet.Relationship.RelationshipKind == RelationshipKind.Association,
"We do not support containment set");
entityContainer.AddEntitySetBase(
ConvertToAssociationSet(
relationshipSet,
providerManifest,
convertedItemCache,
entityContainer,
newGlobalItems));
}
// Populate with converted function imports
foreach (var functionImport in element.FunctionImports)
{
entityContainer.AddFunctionImport(
ConvertToFunction(
functionImport,
providerManifest, convertedItemCache, entityContainer, newGlobalItems));
}
// Extract the optional Documentation
if (element.Documentation != null)
{
entityContainer.Documentation = ConvertToDocumentation(element.Documentation);
}
AddOtherContent(element, entityContainer);
return entityContainer;
}
示例4: Create
/// <summary>
/// The factory method for constructing the EntityContainer object.
/// </summary>
/// <param name="name">The name of the entity container to be created.</param>
/// <param name="dataSpace">DataSpace in which this entity container belongs to.</param>
/// <param name="entitySets">Entity sets that will be included in the new container. Can be null.</param>
/// <param name="functionImports">Functions that will be included in the new container. Can be null.</param>
/// <param name="metadataProperties">Metadata properties to be associated with the instance.</param>
/// <returns>The EntityContainer object.</returns>
/// <exception cref="System.ArgumentException">Thrown if the name argument is null or empty string.</exception>
/// <remarks>The newly created EntityContainer will be read only.</remarks>
public static EntityContainer Create(
string name, DataSpace dataSpace, IEnumerable<EntitySetBase> entitySets,
IEnumerable<EdmFunction> functionImports, IEnumerable<MetadataProperty> metadataProperties)
{
Check.NotEmpty(name, "name");
var entityContainer = new EntityContainer(name, dataSpace);
if (entitySets != null)
{
foreach (var entitySet in entitySets)
{
entityContainer.AddEntitySetBase(entitySet);
}
}
if (functionImports != null)
{
foreach (var function in functionImports)
{
if (!function.IsFunctionImport)
{
throw new ArgumentException(Strings.OnlyFunctionImportsCanBeAddedToEntityContainer(function.Name));
}
entityContainer.AddFunctionImport(function);
}
}
if (metadataProperties != null)
{
entityContainer.AddMetadataProperties(metadataProperties.ToList());
}
entityContainer.SetReadOnly();
return entityContainer;
}
示例5: Can_get_modification_function_mappings
public void Can_get_modification_function_mappings()
{
var entityType = new EntityType("E", "N", DataSpace.CSpace);
var entitySet = new EntitySet("S", "N", null, null, entityType);
var function = new EdmFunction(
"F", "N", DataSpace.CSpace,
new EdmFunctionPayload
{
IsFunctionImport = true
});
var container = new EntityContainer("C", DataSpace.CSpace);
container.AddEntitySetBase(entitySet);
container.AddFunctionImport(function);
var entitySetMapping =
new StorageEntitySetMapping(
entitySet,
new StorageEntityContainerMapping(container));
var functionMapping =
new StorageModificationFunctionMapping(
entitySet,
entityType,
function,
Enumerable.Empty<StorageModificationFunctionParameterBinding>(),
null,
null);
var entityFunctionMappings =
new StorageEntityTypeModificationFunctionMapping(entityType, functionMapping, null, null);
entitySetMapping.AddModificationFunctionMapping(entityFunctionMappings);
Assert.Same(entityFunctionMappings, entitySetMapping.ModificationFunctionMappings.Single());
}
示例6: Cannot_add_function_to_readonly_container
public void Cannot_add_function_to_readonly_container()
{
var container = new EntityContainer("container", DataSpace.CSpace);
container.SetReadOnly();
var function = new EdmFunction(
"foo",
"bar",
DataSpace.CSpace,
new EdmFunctionPayload()
{
IsFunctionImport = false
});
Assert.Equal(
Resources.Strings.OperationOnReadOnlyItem,
Assert.Throws<InvalidOperationException>(() => container.AddFunctionImport(function)).Message);
}
示例7: Cannot_add_non_function_import_to_container
public void Cannot_add_non_function_import_to_container()
{
var container = new EntityContainer("container", DataSpace.CSpace);
var function = new EdmFunction(
"foo",
"bar",
DataSpace.CSpace,
new EdmFunctionPayload()
{
IsFunctionImport = false
});
Assert.Equal(
Resources.Strings.OnlyFunctionImportsCanBeAddedToEntityContainer("foo"),
Assert.Throws<ArgumentException>(() => container.AddFunctionImport(function)).Message);
}
示例8: Can_add_function_import_to_container
public void Can_add_function_import_to_container()
{
var container = new EntityContainer("container", DataSpace.CSpace);
var function = new EdmFunction(
"foo",
"bar",
DataSpace.CSpace,
new EdmFunctionPayload()
{
IsFunctionImport = true
});
container.AddFunctionImport(function);
Assert.Equal(1, container.FunctionImports.Count);
Assert.Same(function, container.FunctionImports.Single());
}
示例9: SetReadOnly_is_called_on_child_mapping_items
public void SetReadOnly_is_called_on_child_mapping_items()
{
var entityType = new EntityType("E", "N", DataSpace.CSpace);
var entitySet = new EntitySet("S", "N", null, null, entityType);
var function = new EdmFunction(
"F", "N", DataSpace.CSpace,
new EdmFunctionPayload
{
IsFunctionImport = true
});
var container = new EntityContainer("C", DataSpace.CSpace);
container.AddEntitySetBase(entitySet);
container.AddFunctionImport(function);
var entitySetMapping =
new EntitySetMapping(
entitySet,
new EntityContainerMapping(container));
var functionMapping =
new ModificationFunctionMapping(
entitySet,
entityType,
function,
Enumerable.Empty<ModificationFunctionParameterBinding>(),
null,
null);
var entityFunctionMapping =
new EntityTypeModificationFunctionMapping(entityType, functionMapping, null, null);
entitySetMapping.AddModificationFunctionMapping(entityFunctionMapping);
var entityTypeMapping = new EntityTypeMapping(entitySetMapping);
entitySetMapping.AddTypeMapping(entityTypeMapping);
Assert.False(entityTypeMapping.IsReadOnly);
Assert.False(entityFunctionMapping.IsReadOnly);
entitySetMapping.SetReadOnly();
Assert.True(entityTypeMapping.IsReadOnly);
Assert.True(entityFunctionMapping.IsReadOnly);
}
示例10: Cannot_remove_modification_function_mapping_when_read_only
public void Cannot_remove_modification_function_mapping_when_read_only()
{
var entityType = new EntityType("E", "N", DataSpace.CSpace);
var entitySet = new EntitySet("S", "N", null, null, entityType);
var function = new EdmFunction(
"F", "N", DataSpace.CSpace,
new EdmFunctionPayload
{
IsFunctionImport = true
});
var container = new EntityContainer("C", DataSpace.CSpace);
container.AddEntitySetBase(entitySet);
container.AddFunctionImport(function);
var entitySetMapping =
new EntitySetMapping(
entitySet,
new EntityContainerMapping(container));
var functionMapping =
new ModificationFunctionMapping(
entitySet,
entityType,
function,
Enumerable.Empty<ModificationFunctionParameterBinding>(),
null,
null);
var entityFunctionMappings =
new EntityTypeModificationFunctionMapping(entityType, functionMapping, null, null);
entitySetMapping.AddModificationFunctionMapping(entityFunctionMappings);
entitySetMapping.SetReadOnly();
Assert.Equal(
Strings.OperationOnReadOnlyItem,
Assert.Throws<InvalidOperationException>(
() => entitySetMapping.RemoveModificationFunctionMapping(entityFunctionMappings)).Message);
}