0

我正在与 Linq to Entites 斗争。我是 EF5 和 Linq 的新手。我正在用 VB.NET 编程。我一直在使用将数据集作为 DAL 返回到 BLL 中的表适配器,然后我将其链接到 ObjectDataSource。现在我从 VS2005 ASP.NET 2.0 升级到 VS2012 到 ASO,.NET 4.0 以使用 EF5,并且我已将 EF5 设置为 DAL,我正在尝试重写 BAL 以使用 Linq to Entities 转到 ObjectDataSource。我可以使用我用外键设置的导航对多个表进行一些复杂的查询,但我不明白如何让返回类型与需要数据集的 ObjectDataSource 一起使用。

ContentQ = From ct In DAL.Contents, cd In ct.ContentDuplicateTypes, ce In ct.ContentEditors _
           Where ct.ContentId = Contentid And cd.ShowOnWeb = ShowOnWeb And cd.Hide = Hide And ce.UserId = UserId And ct.websiteId = websiteid Select ct, cd, ce

对于返回单个表,例如 ContentQ= From ct in DAL.Contents select ct

为什么这在下面起作用?为什么我必须使用 include 方法填充这个类以使用 1 对多的 2 个表将其放入 ObjectDataSource 中?

<System.ComponentModel.DataObjectMethodAttribute(ComponentModel.DataObjectMethodType.Select, True)> _
Public Function GetContentFiles() As ContentData
    Dim objContentData As New ContentData

    Using _SBEF As New SBEF5
        Dim objContentDuplicateType = From d In _SBEF.ContentDuplicateTypes.Include("Content") Select d

        For Each objQuery In objContentDuplicateType.ToList
            With objContentData
                'Content

                .Description = objQuery.Content.Description
                .FileName = objQuery.Content.FileName
                .Draft_Path = objQuery.Content.Draft_Path
                .Live_Path = objQuery.Content.Live_Path
                .HeaderTitle = objQuery.Content.HeaderTitle

                'ContentDuplicateType
                .ContentId = objQuery.ContentId
                .DisplayHeader = objQuery.DisplayHeader
                .OrderNumber = objQuery.OrderNumber
                .ShowOnWeb = objQuery.ShowOnWeb
                .Hide = objQuery.Hide
                .DateCreated = objQuery.DateCreated
                .ContentTypeID = objQuery.ContentTypeId
            End With
        Next

        GetContentFiles = objContentData

    End Using

End Function
4

1 回答 1

1

你为什么不使用EntityDataSource

于 2013-03-24T05:00:41.400 回答