3

我目前正在學習更多關於Linq-To-Entities的信息 - 特別是關於急切和懶惰加載的時刻。Linq-To-Entities包括

proxy.User.Include("Role").First(u => u.UserId == userId) 

這應該加載用戶以及用戶擁有的任何角色。我有一個問題,但我也有一個問題。這只是創建一個簡單的模型來了解L2E

我的印象是,這是爲了使事物強類型 - 所以爲什麼我必須寫「角色」?看來,如果我改變了表的名稱,那麼這將不會產生編譯錯誤......

我的錯誤是這樣的:

The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

下面的解決方案允許現在我編寫代碼:

proxy.User.Include(u => u.Role).First(u => u.UserId == userId) 

哪個更好!

+0

EF 4支持這一點。 http://stackoverflow.com/questions/5159621/ef-code-first-includex-x-properties-entity-a-1-many-association – Vas 2013-07-31 11:16:24

回答

5
  1. 包含是一個提示加載,它不強制加載。
  2. 在引用您希望被Include加載的東西之前,請始終檢查IsLoaded屬性。
  3. 有許多方法可以將強類型對象放在include語句中,但Entity Framework沒有解決此問題的方案。谷歌類似於:實體框架ObjectQueryExtension包括
+0

我會非常感興趣的方式來獲得一個強類型的對象在包括聲明。它是無類型的,並導致運行時錯誤,這讓我很頭疼。 – 2009-10-24 13:37:37

+0

我剛剛將我的答案更新爲Google for的短語。具體來說,「ObjectQueryExtension」就是你正在尋找的魔法。 – 2009-10-24 13:39:30

+0

謝謝你,ObjectQueryExtension是完美的。剛剛放下它,它現在編譯安全,錯誤已經消失 – Paul 2009-10-24 13:53:30