【发布时间】:2016-12-21 14:16:18
【问题描述】:
当我尝试使用 EF 保存到我的数据库时出现此错误。
无法将值 NULL 插入到列“CompanyId”中,列不允许空值。
从消息中很明显问题出在哪里,但在我的代码中没有看到任何原因。
这是我的模型:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public string CompanyCountry { get; set; }
public string CompanyCity { get; set; }
public string CompanyPostalCode { get; set; }
public string CompanyPhoneNumber { get; set; }
public string EmailCA { get; set; }
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CompanyId,CompanyName,CompanyAddress,CompanyCountry,CompanyCity,CompanyPostalCode,CompanyPhoneNumber,EmailCA")] Company company)
{
if (ModelState.IsValid)
{
db.Companies.Add(company);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(company);
}
我对这些属性的期望是从它们那里获得一个自动生成的密钥,但显然这不起作用。
有人可以帮忙解释一下吗?
【问题讨论】:
-
显示你的数据库
CompanyId是否是not null -
@Ganesh_Devlekar 错误消息已经显示它在数据库中是
not null,这正是它应该是的。但是,如果数据库定义使其不可为空,但不会使其成为标识列,则可能会出现问题。所以查看表/列的数据库定义还是很有用的。 -
向我们展示足以诊断问题的代码。
-
我刚刚编辑了问题。
-
唯一的解释是数据库列没有设置为Identity。
标签: asp.net-mvc entity-framework