本文整理汇总了C#中Microsoft.Data.Edm.Library.EdmModel.SetEntitySetLinkBuilderAnnotation方法的典型用法代码示例。如果您正苦于以下问题:C# EdmModel.SetEntitySetLinkBuilderAnnotation方法的具体用法?C# EdmModel.SetEntitySetLinkBuilderAnnotation怎么用?C# EdmModel.SetEntitySetLinkBuilderAnnotation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Data.Edm.Library.EdmModel
的用法示例。
在下文中一共展示了EdmModel.SetEntitySetLinkBuilderAnnotation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SimpleCustomerOrderModel
public static IEdmModel SimpleCustomerOrderModel()
{
var model = new EdmModel();
var customerType = new EdmEntityType("Default", "Customer");
customerType.AddStructuralProperty("ID", EdmPrimitiveTypeKind.Int32);
customerType.AddStructuralProperty("FirstName", EdmPrimitiveTypeKind.String);
customerType.AddStructuralProperty("LastName", EdmPrimitiveTypeKind.String);
model.AddElement(customerType);
var orderType = new EdmEntityType("Default", "Order");
orderType.AddStructuralProperty("ID", EdmPrimitiveTypeKind.Int32);
orderType.AddStructuralProperty("Name", EdmPrimitiveTypeKind.String);
model.AddElement(orderType);
var addressType = new EdmComplexType("Default", "Address");
addressType.AddStructuralProperty("Street", EdmPrimitiveTypeKind.String);
addressType.AddStructuralProperty("City", EdmPrimitiveTypeKind.String);
addressType.AddStructuralProperty("State", EdmPrimitiveTypeKind.String);
addressType.AddStructuralProperty("Country", EdmPrimitiveTypeKind.String);
addressType.AddStructuralProperty("ZipCode", EdmPrimitiveTypeKind.String);
model.AddElement(addressType);
// Add navigations
customerType.AddUnidirectionalNavigation(new EdmNavigationPropertyInfo() { Name = "Orders", Target = orderType, TargetMultiplicity = EdmMultiplicity.Many });
orderType.AddUnidirectionalNavigation(new EdmNavigationPropertyInfo() { Name = "Customer", Target = customerType, TargetMultiplicity = EdmMultiplicity.One });
var container = new EdmEntityContainer("Default", "Container");
var customerSet = container.AddEntitySet("Customers", customerType);
var orderSet = container.AddEntitySet("Orders", orderType);
customerSet.AddNavigationTarget(customerType.NavigationProperties().Single(np => np.Name == "Orders"), orderSet);
orderSet.AddNavigationTarget(orderType.NavigationProperties().Single(np => np.Name == "Customer"), customerSet);
EntitySetLinkBuilderAnnotation linkAnnotation = new MockEntitySetLinkBuilderAnnotation();
model.SetEntitySetLinkBuilderAnnotation(customerSet, linkAnnotation);
model.SetEntitySetLinkBuilderAnnotation(orderSet, linkAnnotation);
model.AddElement(container);
return model;
}
示例2: BuildEdmModel
public static IEdmModel BuildEdmModel(string containerNamespace, string containerName, IEnumerable<IStructuralTypeConfiguration> entityTypeConfigurations, IEnumerable<IEntitySetConfiguration> entitySetConfigurations)
{
if (entityTypeConfigurations == null)
{
throw Error.ArgumentNull("entityTypeConfigurations");
}
if (entitySetConfigurations == null)
{
throw Error.ArgumentNull("entitySetConfigurations");
}
EdmModel model = new EdmModel();
Dictionary<string, IEdmStructuredType> types = EdmTypeBuilder.GetTypes(entityTypeConfigurations)
.OfType<IEdmStructuredType>()
.ToDictionary(t => t.ToString());
foreach (IEdmStructuredType type in types.Values)
{
if (type.TypeKind == EdmTypeKind.Complex)
{
model.AddElement(type as IEdmComplexType);
}
else if (type.TypeKind == EdmTypeKind.Entity)
{
model.AddElement(type as IEdmEntityType);
}
else
{
throw Error.InvalidOperation(SRResources.UnsupportedEntityTypeInModel);
}
}
if (entitySetConfigurations.Any())
{
EdmEntityContainer container = new EdmEntityContainer(containerNamespace, containerName);
Dictionary<string, EdmEntitySet> edmEntitySetMap = new Dictionary<string, EdmEntitySet>();
foreach (IEntitySetConfiguration entitySet in entitySetConfigurations)
{
EdmEntitySet edmEntitySet = container.AddEntitySet(entitySet.Name, (IEdmEntityType)types[entitySet.EntityType.FullName]);
EntitySetLinkBuilderAnnotation entitySetLinkBuilderAnnotation = new EntitySetLinkBuilderAnnotation(entitySet);
model.SetEntitySetLinkBuilderAnnotation(edmEntitySet, entitySetLinkBuilderAnnotation);
model.SetAnnotationValue<EntitySetUrlAnnotation>(edmEntitySet, new EntitySetUrlAnnotation { Url = entitySet.GetUrl() });
edmEntitySetMap.Add(edmEntitySet.Name, edmEntitySet);
}
foreach (IEntitySetConfiguration entitySet in entitySetConfigurations)
{
EdmEntitySet edmEntitySet = edmEntitySetMap[entitySet.Name];
EntitySetLinkBuilderAnnotation entitySetLinkBuilderAnnotation = model.GetEntitySetLinkBuilder(edmEntitySet) as EntitySetLinkBuilderAnnotation;
foreach (NavigationPropertyConfiguration navigation in entitySet.EntityType.NavigationProperties)
{
NavigationPropertyBinding binding = entitySet.FindBinding(navigation);
if (binding != null)
{
EdmEntityType edmEntityType = types[entitySet.EntityType.FullName] as EdmEntityType;
IEdmNavigationProperty edmNavigationProperty = edmEntityType.NavigationProperties().Single(np => np.Name == navigation.Name);
edmEntitySet.AddNavigationTarget(edmNavigationProperty, edmEntitySetMap[binding.EntitySet.Name]);
entitySetLinkBuilderAnnotation.AddNavigationPropertyLinkBuilder(edmNavigationProperty, entitySet.GetNavigationPropertyLink(edmNavigationProperty.Name));
}
}
}
model.AddElement(container);
}
return model;
}