0

我的模型中有 3 个实体。A->B->C,其中 A 是父级,C 是子级。IC 是从 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 获取值。我该怎么做?非常感谢!

4

1 回答 1

0

所以通过在我的 xaml 中说:

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

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

和:

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

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

于 2013-08-15T16:29:53.600 回答