当前位置:  开发笔记 > 编程语言 > 正文

如何让EntityDataSource允许我访问子实体?

如何解决《如何让EntityDataSource允许我访问子实体?》经验,为你挑选了1个好方法。

我有一个非常简单的模型,我正在为使用Northwind数据库的客户端.我有一个包含三个实体的EDMX文件:产品,类别和供应商.

我正在尝试创建一个包含GridView的页面,该GridView显示产品,包括类别名称和供应商名称.使用LINQ to SQL,我可以让LinqDataSource控件返回Products实体,然后可以在GridView中使用TemplateField,如下所示:


    <%# Eval("Category.CategoryName") %>

然而,似乎EntityDataSource并没有那么好玩.就好像它不会延迟加载类别数据一样.我有一个非常简单的EDS:



但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

尝试执行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控件的声明性标记更新为:



DCNYAM.. 5

您需要使用实体数据源的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 =假



1> DCNYAM..:

您需要使用实体数据源的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 =假

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有