对于不存在于表单中的所需实体,验证失败?

时间:2016-03-30 13:59:04

标签: c# asp.net asp.net-mvc entity-framework validation

所以我暂时放下了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();
}

1 个答案:

答案 0 :(得分:2)

在将用户添加到DbSet之前,您需要使用值设置Key属性:

    using (AccountDatabaseContext context = new AccountDatabaseContext())
    {
        user.m_IdentityCode="someValue";
        context.m_UserAccounts.Add(user);
        context.SaveChanges();
    }

您的问题是因为该属性默认为null,当您调用SaveChanges方法时,EF会验证您的模型,并会注意到您尚未设置您的密钥属性。