我正在与 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