Sco*_*ell 3 asp.net entity-framework entitydatasource
我有一个非常简单的模型,我正在为使用Northwind数据库的客户端.我有一个包含三个实体的EDMX文件:产品,类别和供应商.
我正在尝试创建一个包含GridView的页面,该GridView显示产品,包括类别名称和供应商名称.使用LINQ to SQL,我可以让LinqDataSource控件返回Products实体,然后可以在GridView中使用TemplateField,如下所示:
<ItemTemplate>
<%# Eval("Category.CategoryName") %>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
然而,似乎EntityDataSource并没有那么好玩.就好像它不会延迟加载类别数据一样.我有一个非常简单的EDS:
<asp:EntityDataSource ID="dsProducts" runat="server"
ConnectionString="name=NorthwindEntities"
DefaultContainerName="NorthwindEntities" EnableFlattening="False"
EntitySetName="Products">
</asp:EntityDataSource>
Run Code Online (Sandbox Code Playgroud)
但GridView不显示类别名称.如果我为GridView创建一个RowDataBound事件处理程序并将Product实体绑定到该行,我会看到该产品的Category属性返回Nothing.例如,如果我这样做:
Protected Sub gvProducts_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvProducts.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim p As NorthwindModel.Product = e.Row.DataItem
Dim catName = p.Category.CategoryName
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
尝试执行p.Category.CategoryName时出现NullReferenceException.
但是,如果我在Page_Load事件处理程序中编写代码,我知道延迟加载适用于EDMX b/c,如:
Dim context As New NorthwindModel.NorthwindEntities
Dim p = context.Products.Take(1).Single()
Run Code Online (Sandbox Code Playgroud)
我可以通过p.Category.CategoryName获取类别名称而不会出错.
我是否需要做一些伏都教来让EntityDataSource包含对检索相关实体的支持?
谢谢
解决方案: 我指定了EntityDataSource的Include属性,注意要包含的实体对象.具体来说,我将我的EntityDataSource控件的声明性标记更新为:
<asp:EntityDataSource ID="dsProducts" runat="server"
ConnectionString="name=NorthwindEntities"
DefaultContainerName="NorthwindEntities" EnableFlattening="False"
EntitySetName="Products" Include="Category,Supplier">
</asp:EntityDataSource>
Run Code Online (Sandbox Code Playgroud)
您需要使用实体数据源的Include属性来获取相关实体.然后,更改标记以查询这些实体.
看一下"编程实体框架"一书中的几页:http : //books.google.com/books?id=wp8V0vBebnoC&pg=PA284&lpg=PA284&dq=entitydatasource+include&source=bl&ots=cKtfB1J8vC&sig=C--WKKuU-9CNOQgDxdN0MpSMLt4&hl = EN&EI = OidPTMnKB5P-ngeM1rinBw&SA = X&OI = book_result&CT =导致&resnum = 7&VED = 0CDAQ6AEwBg#v = onepage&q = entitydatasource%20include&F =假
| 归档时间: |
|
| 查看次数: |
5546 次 |
| 最近记录: |