0
我試圖添加從實體數據模型類創建的對象。我有一個名爲Users的表格,它已經變成了一個User EDM類。而且我還有一個Pages頁面,它已經成爲一個Page EDM類。這些表具有外鍵關係,因此每個頁面都與許多用戶關聯。現在我想能夠添加一個頁面,但我無法得到如何去做。我在下面的用戶處得到一個null參考異常。我仍然很困惑這一切,所以我敢肯定這是一個簡單的錯誤,但我不知道該怎麼做。實體框架中的外鍵關係
另外,順便說一下,編譯器要求我在對象初始值設定項中設置PageID,即使此字段在表中設置爲自動ID。我是否正確地將它設置爲0,期望它在保存時自動更新在表格中,或者我應該怎麼做?
任何幫助表示讚賞!
問題的方法:
private Page GetPage(User currentUser)
{
string url = _request.ServerVariables["url"].ToLower();
var userPages = from p in _context.PageSet
where p.Users.UserID == currentUser.UserID
select p;
var existingPage = userPages.FirstOrDefault(e => e.Url == url);
if (existingPage != null)
return existingPage;
Page page = new Page()
{
Count = 0,
Url = _request.ServerVariables["url"].ToLower(),
PageID = 0, //Only initial value, changed later?
};
_context.AddToPageSet(page);
page.Users.UserID = currentUser.UserID; //Here's the problem...
return page;
}
謝謝,但不幸的是它不起作用...首先,您的表達式試圖將一個User對象分配給一個int(UserID)。所以我改爲page.Users.UserID = _context.UserSet.First(u => u.UserID == currentUser.UserID).UserID;但那也行不通。仍然在page.Users.UserID的用戶部分nullreference。我試圖添加一個新的頁面行,然後將該新頁面上的外鍵UserID設置爲當前User對象的UserID(主鍵)。我在這裏錯過了什麼嗎?很明顯,新頁面的Users集合是空的,但是我需要做些什麼來添加它呢? – Anders 2010-05-24 13:41:10
對不起,複製/粘貼錯誤。固定。根據你上面的代碼,'Users'看起來像一個'User',而不是一個集合。 – 2010-05-24 14:13:16
你說得對,它不是一個集合。但爲什麼它會被稱爲用戶然後...?但是,這工作!我進一步調查了一下,例如這裏建議不要這樣做:http://www.codewrecks.com/blog/index.php/2009/02/18/entity-framework-relations-and-entitykey/(顯然是由於開銷)。但是替代代碼真的太複雜了,所以我寧願隨你的建議去。任何承擔這一點? (我使用EF 3.5 btw,在這方面是4.0不同的?)。謝謝你的幫助! – Anders 2010-05-24 14:47:30