我使用LINQ努力的entites。我是EF5和Linq的新手。我在VB.NET中編程。我一直在使用將數據集作爲DAL返回到BLL中的表適配器,然後將其鏈接到ObjectDataSource。現在我升級到VS2012從VS2005 ASP.NET 2.0 ASO,.NET 4.0使用EF5和我已經安裝EF5爲DAL和我想重寫BAL使用LINQ到實體去到ObjectDataSource。我可以使用Navigation I設置外鍵對多個表執行一些複雜的查詢,但我不明白如何讓返回類型與需要DataSet的ObjectDataSource一起工作。使用EF5 LINQ到實體爲DAL到BLL到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
對於DAL.Contents選擇克拉返回單個表例如 ContentQ =從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
一目瞭然,而不是更多地瞭解你的應用程序,你可能需要到ObjectDataSource映射到返回的實體(或映射實體正在使用的ObjectDataSource控件的對象),而不是一個DataSet。我從來沒有使用過一個DataSet的ObjectDataSource - 只用我寫的自定義類。 – Tim 2013-03-24 03:44:08
現在讓我來展開這個問題。看起來,在GridView中進行分頁和排序的唯一方法是使用自定義分頁和自定義排序,其中必須通過表格的sorttag和MaxCount。有趣的是來自表格適配器的數據集自動獲取。我想知道Linq to Entity開銷是否與DataSets相同? Hmmmmm – 2013-03-26 21:57:12