实体框架 - 从导航属性获取值

时间:2013-08-15 15:58:55

标签: wpf entity-framework

我的模型中有3个实体。 A-> B-> C,其中A是超级父母,C是孩子。 I C派生自B,B派生自A.我将C加载到数据网格中,我需要能够显示B和A的值。现在我可以通过以下方式显示B的值:

 dgIA.ItemsSource = ctx.C.OfType<SOME_TYPE>().Include("B");

在我的xaml中,我说:

  <DataGridTextColumn Header="property 1" Binding="{Binding A.Name}"/>
  <DataGridTextColumn Header="property 2" Binding="{Binding B.Name}"/>
  <DataGridTextColumn Header="property 3" Binding="{Binding Frequency}"/>//a value in C

我需要能够显示A.Name,但如果我尝试通过说:

来包含A.
ctx.C.OfType<SOME_TYPE>().Include("B").Include("A");

我得到例外:

指定的包含路径无效。 EntityType'DB.SOME_TYPE'未声明名为“A”的导航属性。

我理解为什么会这样做,因为我的实体C只有B的导航属性,而B有一个导航属性给A,但我希望C能够以我的方式从A获取值已经表明。我该怎么做?非常感谢你!

1 个答案:

答案 0 :(得分:0)

所以在我的xaml中说:

   <DataGridTextColumn Header="property 1" Binding="{Binding B.A.Name}"/>

这访问了B的nav属性以访问A.

  dgIA.ItemsSource = ctx.A.OfType<SOME_TYPE>();

不包含或需要任何东西。显然EF的'关系修复'处理它,你只需要点访问器。