- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为使用 Northwind 数据库的客户端制作一个非常简单的模型。我有一个包含三个实体的 EDMX 文件:产品、类别和供应商。
我正在尝试创建一个具有 GridView 的页面,用于显示产品,包括类别名称和供应商名称。使用 LINQ to SQL,我可以让 LinqDataSource 控件返回 Products 实体,然后可以在 GridView 中拥有 TemplateField,如下所示:
<ItemTemplate>
<%# Eval("Category.CategoryName") %>
</ItemTemplate>
但是,EntityDataSource 似乎运行得不太好。就好像它不会延迟加载类别数据一样。我有一个非常简单的 EDS:
<asp:EntityDataSource ID="dsProducts" runat="server"
ConnectionString="name=NorthwindEntities"
DefaultContainerName="NorthwindEntities" EnableFlattening="False"
EntitySetName="Products">
</asp:EntityDataSource>
但是GridView不显示类别名称。如果我为 GridView 创建 RowDataBound 事件处理程序并将 Product 实体绑定(bind)到该行,我会看到该产品的 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
尝试执行 p.Category.CategoryName 时出现 NullReferenceException。
但是,如果我在 Page_Load 事件处理程序中编写如下代码,我知道延迟加载适用于 EDMX b/c:
Dim context As New NorthwindModel.NorthwindEntities
Dim p = context.Products.Take(1).Single()
我可以通过 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>
最佳答案
您需要使用实体数据源的 Include 属性来获取相关实体。然后,更改标记以查询这些实体。
看一下“编程 Entity Framework ”一书中的几页:http://books.google.com/books?id=wp8V0vBebnoC&pg=PA284&lpg=PA284&dq=entitydatasource+include&source=bl&ots=cKtfB1J8vC&sig=C--WGKuU-9CNOQgDxdN0MpSMLt4&hl=en&ei=OidPTMnKB5P-ngeM1rinBw&sa=X&oi=book_result&ct=result&resnum=7&ved=0CDAQ6AEwBg#v=onepage&q=entitydatasource%20include&f=false
关于asp.net - 如何获取 EntityDataSource 以允许我访问子实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346657/
我是一名优秀的程序员,十分优秀!