问题描述
||
我正在使用EF4,并且在我的域模型中有一个称为“应用程序”的实体。应用程序具有一个名为Status的导航属性。状态实体包含2个字段,即StatusID和StatusName。
我正在显示一个DataGrid,其中显示了Applications的详细信息。我已经用[Include]属性修饰了应用程序元数据,并且还修改了GetApplicationsQuery使其具有.Include(\“ status \”)语句。使用Linq查询在代码中设置网格的ItemsSource。
如果将DataGrid上的AutoGenerateColumns设置为true,则status列指示存在状态对象,因此Includes正常工作。
我现在想将AutoGenerateColumns设置为false并手动构建datagrid(仅显示几列),但是我找不到如何将StatusName字段(属于状态导航属性)绑定到其中一列。下面的代码显然无法正常工作,因为我将Status列有效地绑定到对象,但是绑定到导航属性上的字段的正确方法是什么?
<telerik:GridViewDataColumn Header=\"App Name\" DataMemberBinding=\"{Binding AppName}\"/>
<telerik:GridViewDataColumn Header=\"Commentary\" DataMemberBinding=\"{Binding Commentary}\"/>
<telerik:GridViewDataColumn Header=\"Status\" DataMemberBinding=\"{Binding **status**}\"/>
我已经尝试绑定到status.StatusName,但现在只是猜测。任何帮助,将不胜感激。
谢谢
中号
解决方法
找到了问题。
我没有使用在DomainService中定义的查询(在本例中为GetApplicationsQuery),而是使用了Linq查询(来自ctx.applications中的..........)。
生成的GetApplicationsQuery添加了.Include(\“ status \”)语句,但是我的手动Linq查询没有。
我将DataGrid ItemsSource设置为使用GetApplicationsQuery()。Where(a => ....),然后可以使用2个零件名称status.StatusName访问导航属性。
中号