tom*_*umb 0 asp.net entity-framework objectquery
我正试图掌握实体框架,有一件事真的让我感到沮丧.我仍然不完全确定术语并没有帮助,我试图避免同时学习LINQ,因此谷歌搜索是困难的.
我有两个表,公司和地址与1对多的关系.如果我写下面的内容:
ObjectQuery<Company> companies = queryContext.Companies.Include("Addresses");
Run Code Online (Sandbox Code Playgroud)
看起来我得到了我想要的东西(公司 - >结果视图[0] .Addresses.Count> 0)
我现在要做的是将公司名称和所有地址绑定到ASP.NET应用程序中的gridview
this.CompaniesGrid.DataSource = companies;
this.CompaniesGrid.DataBind();
Run Code Online (Sandbox Code Playgroud)
<asp:GridView runat="server" ID="CompaniesGrid" AllowSorting="true">
<Columns>
<asp:BoundField DataField="Name" />
<asp:BoundField DataField="Address" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
这本身就会抛出一个错误(A field or property with the name 'Address' was not found on the selected data source) - 我认为因为公司 - >结果视图[0] .Name存在但.Address不存在(因为它隐藏在地址关系中).绑定到Addresses.Address也没有帮助.
我在这个帖子的底部发现了一个非常难看的解决方法,但如果可能的话我宁愿避免使用它.
有没有办法'展平'我的结果,以便顶级对象为所有包含的字段提供加入?
任何帮助非常感谢!
您的objectquery返回一个图表.虽然我认为你真的应该把它搞砸并学习linq,如果你想用.NET编程(大笑...除了真的,你应该),你可以编写一个投影查询来带回平坦的结果并绑定在ASP中.净.
扁平化的诀窍是从关系中的"孩子"开始.所以这样的事情:
grid.datasource= context.Addresses.Select
(a=>new {a.Company.CompanyName,a.Street, a.City}).ToList();
Run Code Online (Sandbox Code Playgroud)
(代码无法保证,因为stackoverflow UI不提供.net intellisense或编译时检查.shesh.).
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |