有没有办法从实体的元数据中查看它的属性是否是导航属性?
我可以通过检查属性是否实现ICollection来确定它是否是实体集合,然后从那里我可以判断它是否是导航属性。
但是如果属性不是实体集合而只是对另一个实体的引用呢?
发布于 2012-04-20 21:11:24
您可以从MetdataWorkspace获取O-Space EDM实体类型,它具有NavigationProperties属性。下面是一个示例:
var workspace = ((IObjectContextAdapter) ctx).ObjectContext.MetadataWorkspace;
var itemCollection = (ObjectItemCollection)(workspace.GetItemCollection(DataSpace.OSpace));
var entityType = itemCollection.OfType<EntityType>().Single(e => itemCollection.GetClrType(e) == typeof(MyEntity));
foreach(var navigationProperty in entityType.NavigationProperties)
{
Console.WriteLine(navigationProperty.Name);
}
发布于 2014-01-13 18:02:01
你可以使用另一种方法来解决这个问题。
DbContext :Obs变量是某个Obs实体实例;
foreach (var propertyInfo in found.GetType().GetProperties())
{
var reference = Context.Entry(found).Member(propertyInfo.Name) as DbReferenceEntry;
if (reference != null)
{
reference.Load();
}
}
https://stackoverflow.com/questions/10251863
复制相似问题