2010-05-13 101 views
0

在VS2008中,我認爲它是EF1.0,這工作得很好。如何查詢實體框架中的實體4

string queryString = @"SELECT VALUE USERS FROM ProjectDBEntities.Users AS User 
      INNER JOIN ProjectDBEntities.Favorites AS F ON F.FavUserId = User.UserId 
      WHERE F.UserId = " + 3 + " ORDER BY F.CreateDate DESC "; 

     System.Data.Objects.ObjectQuery<User> usersQuery = 
       new System.Data.Objects.ObjectQuery<User>(queryString, context).Include("Detail"); 

     //int count = usersQuery.Count(); 
     foreach (User result in usersQuery) 
      Console.WriteLine("User Name: {0}", result.UserName); 

相同的代碼在VS2010 EF4崩潰上與以下錯誤foreach循環:

的查詢的結果類型既不是一個的EntityType也不與實體元件類型CollectionType。包含路徑只能爲具有這些結果類型之一的查詢指定。

+0

是否需要ESQL解決方案?這對於L2E來說是微不足道的。 – 2010-05-14 13:19:47

+0

Craig,L2E會如何處理? – Picflight 2010-05-14 15:20:26

+0

按照我的文章[這裏](http://social.msdn.microsoft.com/Forums/en-US/732cbb72-2ca0-45c3-8702-b30c3c077aa8/entitydatasource-issue?forum=adodotnetentityframework&prof=required)看起來你如果您已經使用自定義的「選擇」,則不需要指定「Include」。 (所以請嘗試刪除包含)。 – PeterX 2014-07-31 10:00:10

回答

2
var q = from u in ProjectDBEntities.Users 
     from f in u.Favorites 
     where f.User.Id == 3 
     orderby f.CreateDate desc; 

我做你的實體模型/屬性名稱一些推定,因爲你沒有表現出來,但是這應該給你的總體思路。