ben db.SaveChanges();
talimatı aşağıdaki hatayı alıyorum:Neden bu bir NULL değer istisnası atıyor? Nedense
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.
Kontrolör kodu:
[HttpPost]
[Authorize]
public ActionResult Create(Portfolio portfolio)
{
if (ModelState.IsValid)
{
portfolio.UserId = (Guid)Membership.GetUser().ProviderUserKey;
db.AddToPortfolios(portfolio);
db.SaveChanges();
}
return View("MyPortfolios");
}
Ben ayıklayıcıya adım attı ve kullanıcı kimliği doldurulur ediliyor doğruladı.
Güncelleme:
Ben db.Portfolios.AddObject(portfolio);
için db.AddToPortfolios(portfolio);
değiştirmeyi denedim ama hala aynı sorun var.
Portfolios
ObjectSet
, Attach()
yöntemini kullanmalı mıyım?
'UserId' yabancı bir anahtardır, başka bir tabloya veya 'Portföy' tablonuzdaki birincil anahtar mı (ya da her ikisi de 1- 1 arası ilişki için)? EF 4.1 kullanıyor musunuz? Merak ediyorum çünkü 'db' kodunuzda 'ObjectContext' ve' DbContext' değil. – Slauma
Haklısınız sürüm 4 değil 4.1 kullanıyorum. Veritabanını oluşturmak için ilk yaklaşımı kullandım. 'UserId', 'Portföy' için birincil anahtardır. Portföyün başka bir tabloyla çok fazla ilişkisi vardır. Entity framework, gerçek veritabanında bir çok kişiye kolaylık sağlamak için birleştirme tablosu oluşturmuş gibi görünüyor. – ZeroDivide