出於某種原因,我收到以下錯誤在db.SaveChanges();
指令:這是爲什麼拋出NULL值異常?
Cannot insert the value NULL into column 'UserId', table 'XXXXXXXXX_Dev.dbo.Portfolios'; column does not allow nulls. INSERT fails.
The statement has been terminated.
控制器代碼:
[HttpPost]
[Authorize]
public ActionResult Create(Portfolio portfolio)
{
if (ModelState.IsValid)
{
portfolio.UserId = (Guid)Membership.GetUser().ProviderUserKey;
db.AddToPortfolios(portfolio);
db.SaveChanges();
}
return View("MyPortfolios");
}
我已經通過調試加強,並證實正在進行填充用戶名。
更新:
我試圖改變db.AddToPortfolios(portfolio);
到db.Portfolios.AddObject(portfolio);
但它仍然有同樣的問題。我應該使用Attach()
方法嗎?
User'd是另一個表的外鍵,還是「Portfolio」表上的主鍵(或者兩者可能是1對1關係)?你真的使用EF 4.1嗎?我想知道,因爲'db'在你的代碼中似乎是一個'ObjectContext'而不是'DbContext'。 – Slauma
你是對的我正在使用版本4而不是4.1。我使用模型第一種方法來創建數據庫。 'UserId'是'Portfolio'的主鍵。 「投資組合」與另一張桌子有多對多的關係。它看起來像實體框架在實際數據庫中創建了一個連接表,以方便多對多。 – ZeroDivide