Por alguna razón estoy recibiendo el siguiente error en la instrucción db.SaveChanges();
:¿Por qué esto arroja una excepción de valor NULO?
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.
código de controlador:
[HttpPost]
[Authorize]
public ActionResult Create(Portfolio portfolio)
{
if (ModelState.IsValid)
{
portfolio.UserId = (Guid)Membership.GetUser().ProviderUserKey;
db.AddToPortfolios(portfolio);
db.SaveChanges();
}
return View("MyPortfolios");
}
He caminado a través del depurador y el ID de usuario confirmado que se está llenando.
Actualización:
He intentado cambiar db.AddToPortfolios(portfolio);
-db.Portfolios.AddObject(portfolio);
pero sigue teniendo el mismo problema.
Portfolios
es un ObjectSet
, ¿Debería utilizar el método Attach()
?
¿Es 'UserId' una clave foránea para otra tabla o es la clave principal en su tabla' Portfolio' (o ambas para una relación tal vez de 1 a 1)? ¿Realmente usas EF 4.1? Me pregunto porque 'db' parece ser un' ObjectContext' y no un 'DbContext' en tu código. – Slauma
Tiene razón, estoy usando la versión 4, no la 4.1. Usé un primer acercamiento modelo para crear la base de datos. 'UserId' es la clave principal para' Portfolio'. 'Portfolio' tiene una relación muchos a muchos con otra tabla. Parece que el marco de entidad creó una tabla de unión en la base de datos real para facilitar muchos a muchos. – ZeroDivide