【发布时间】:2015-05-12 14:27:46
【问题描述】:
我是 EF 新手,遇到了障碍。我正在尝试获取从基本类型派生的实体类型的导航属性列表。我打算用....
ObjectContext objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)context).ObjectContext;
var entitySetElementType = objectContext.CreateObjectSet<DerivedType>().EntitySet.ElementType;
foreach(var navigationProperty in entitySetElementType.NavigationProperties)
{ //need PropertyInfo here}
这是我了解到我无法获得派生类型的 ObjectSet 的地方。抛出的异常是
"没有为指定的实体类型定义实体集 'SurveyDALv2.Model.Correspondence'。如果 'SurveyDALv2.Model.Correspondence' 是派生类型,使用基类 而是输入。”
我知道我可以使用
获取派生实体的 ObjectQueryobjectContext.CreateObjectSet<BaseType>().OfType<DerivedType>()
但是,这对获取导航属性列表没有帮助(除非我遗漏了一些东西)。我看不到如何访问派生实体类型的 EntitySet.NavigationProperties。
非常感谢任何帮助。
【问题讨论】:
-
从未尝试过使用核心上下文,但您可以试试这个:
CreateObjectSet<BaseType>().OfType<DerivedType>()而不是CreateObjectSet<DerivedType>()吗? -
谢谢,但我正在寻找在派生类型实体上定义的导航属性列表。这(stackoverflow.com/questions/17886725/… 可以很好地获取导航属性列表,除非它是派生类型实体)(来自 marsman 的答案)
标签: c# entity-framework