0
我有這樣一個模型:實體框架 - 延遲加載,加載子實體問題
用戶=>模式=>模塊=>治療
(用戶對個人資料,個人資料有許多模塊,一個模塊有許多treatement)
這種模式是通過反向實體Framwork代碼首先
,當我用這個,在一個簡單的ASMX文件,要求一個用戶engineeed,我得到這個錯誤:
A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.
,這是因爲配置文件實體contrains具有其pofiles用戶的列表...等
在我的數據上下文,我禁用了延遲加載,它似乎確定進行身份驗證,在我的檢索用戶個人資料,我有個人資料ID,但個人資料實體未加載。
this.Configuration.LazyLoadingEnabled = false;
太棒了!
一旦認證,我必須建立用戶菜單的基礎上,在他的個人資料模塊和treatements。
,所以我問對象加載配置文件:
User user = new User();
using (cduContext db = new cduContext())
{
string encryptedPassword = Encryption.Encrypt(password);
user = (from u in db.Users
where u.UserName.Equals(login) &&
u.Password.Equals(encryptedPassword)
select u).FirstOrDefault();
// Including the user's Profile
user = db.Users.Include("Profile").FirstOrDefault();
}
return user;
配置文件被加載,但他的子實體過,例如此配置文件的用戶列表!
,然後,我很享受了同樣的錯誤:
A circular reference was detected while serializing an object of type 'CDU.Entities.Models.User'.
爲什麼曲線是「懶加載」?
我需要包括點播這些實體... 我怎樣才能取悅?
嗨基爾斯滕克, 不工作,包括被applyed到實體... 用戶=(從u在db.Users 其中u.UserName.Equals(登錄)&& u.Password.Equals(encryptedPassword) 選擇U).//你不能使用包含在這裏!包括( 「檔案」)FirstOrDefault()。 – albarmat 2013-03-18 14:13:26
你應該把'.INCLUDE(「檔案」)''的db.Users' – 2013-03-18 14:19:44
由於延之後,我編輯 – 2013-03-18 14:25:44