我具有以下控制器操作来创建用户。
public ActionResult Create([Bind(Include = "Name, Email, Role, Password")] User user)
{
if (ModelState.IsValid)
{
// Create password hash
user.Salt = Security.RandomString(16);
user.Password = Security.Encrypt(user.Password, user.Salt);
// Add Qualifications
var qualification = db.Qualifications.Find(5);
user.Qualifications.Add(qualification);
// Apply changes
db.Users.Add(user);
db.SaveChanges();
}
return RedirectToAction("Index");
}
除了为用户添加资格认证(我想添加多个资格认证,一旦可行)之外,一切都很好。用户模型具有以下功能:public virtual ICollection<Qualification> Qualifications { get; set; }
存储资格(Entirey Framework已经为其创建了表的多对多关系)。
我总是收到一个错误:“对象引用未设置为对象的实例。”,在行: user.Qualifications.Add(qualification);
我不明白为什么,毕竟我确实以与之前相同的方式添加了Salt和Password属性(并且效果很好)。另外,我确实以完全相同的方式在我的种子方法中向用户对象添加了多个限定条件,在这种情况下也可以正常工作。
这里有什么问题,我该如何解决?
我通过实例化解决了这个问题:
user.Qualifications = new List<Qualification>();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句