所以我暂时放下了android,并决定回到我的.Net根源并熟悉ASP / MVC。但是,我目前遇到了这个问题:
我已经创建了一个简单的登录表单,其后面的模型有一个userID,但它是我将通过代码生成的密钥,因此它没有得到所需的标记。问题是当我去注册时我得到这个错误:
异常详细信息: System.Data.Entity.Validation.DbEntityValidationException:验证 一个或多个实体失败。请参阅'EntityValidationErrors'属性 更多细节。验证错误是:m_IdentityCode字段 是必需的。
但是没有指定其要求的属性。我观看了一些人们使用[key]属性的视频,但没有产生需求问题,因此我不确定发生了什么,并希望得到任何帮助。
[Key]
public string m_IdentityCode { get; set; }
编辑;
[HttpPost]
public ActionResult UserRegistration(UserAccountModel user)
{
if (ModelState.IsValid)
{
using (AccountDatabaseContext context = new AccountDatabaseContext())
{
context.m_UserAccounts.Add(user);
context.SaveChanges();
ModelState.Clear();
ViewBag.Message = "You have successfully registered your account. Welcome.";
}
}
return View();
}
答案 0 :(得分:2)
在将用户添加到DbSet
之前,您需要使用值设置Key属性:
using (AccountDatabaseContext context = new AccountDatabaseContext())
{
user.m_IdentityCode="someValue";
context.m_UserAccounts.Add(user);
context.SaveChanges();
}
您的问题是因为该属性默认为null
,当您调用SaveChanges
方法时,EF会验证您的模型,并会注意到您尚未设置您的密钥属性。