2013-03-24 42 views
0

我使用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 
+0

一目瞭然,而不是更多地瞭解你的應用程序,你可能需要到ObjectDataSource映射到返回的實體(或映射實體正在使用的ObjectDataSource控件的對象),而不是一個DataSet。我從來沒有使用過一個DataSet的ObjectDataSource - 只用我寫的自定義類。 – Tim 2013-03-24 03:44:08

+0

現在讓我來展開這個問題。看起來,在GridView中進行分頁和排序的唯一方法是使用自定義分頁和自定義排序,其中必須通過表格的sorttag和MaxCount。有趣的是來自表格適配器的數據集自動獲取。我想知道Linq to Entity開銷是否與DataSets相同? Hmmmmm – 2013-03-26 21:57:12

回答

1

你爲什麼不利用EntityDataSource

+0

該EntityDataSource只在一個單一的表(實體)的限制和quering多個表時不能工作。它鎖定編輯,插入和刪除。 – 2013-03-26 21:54:42

+0

我看到如何從單個實體(表)獲取數據如何使用導航從多個表中提取查詢?類型是否是異步(原文如此),並且僅將函數類型設置爲IQueryable? – 2013-03-26 22:07:04

+0

如果我創建了一個視圖並且使得一個實體能夠從GridView繼續工作,那該怎麼辦?我試圖取代我DAL這是使用表適配器與實體框架的工作LINQ到實體是隨後把與性業務層類底線,選擇,插入,刪除與一個ObjectDataSource使用。 – 2013-03-26 22:08:15