我有一个简单的数据库,其中包含几个与外键链接的表格。每个表都有一个“id”列,其中包含Identity Property和autoincrement。从这个数据库我在VS2015中生成了一个模型。如果我现在尝试在MVC 5 Web应用程序中插入新数据,我会得到一个错误,它说“NULL”值不能插入“id”列。所以我想知道为什么它甚至会尝试。它应该由数据库自动递增。在映射中,参数是:
Entity Key = true
Nullable = False (it´s integer, so it can´t be Nullable)
StoreGeneratedPattern = Identity
Type = Int32
模型本身就是自动生成的类:
namespace project.Models
{
using System;
using System.Collections.Generic;
public partial class projectClass
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public projectClass()
{
this.plan = new HashSet<plan>();
}
public int id { get; set; }
public string targetName { get; set; }
public Nullable<System.DateTime> created { get; set; }
public Nullable<System.DateTime> updated { get; set; }
public int CategoryId { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<plan> plan { get; set; }
public virtual Category Category { get; set; }
}
}
Controller也是自动生成的:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "id,targetName,created,updated,CategoryId")] projectClass projectClass)
{
if (ModelState.IsValid)
{
db.projectClass.Add(projectClass);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewBag.trainingCategoryId = new SelectList(db.projectClass, "id", "shortDescription", projectClass.CategoryId);
return View(projectClass);
}
我真的不知道为什么要插入id列,以及在哪里更改它。
答案 0 :(得分:0)
好的,明白了。这是一个数据库问题。我试图手动插入一行,也失败了。所以我在这张桌子上发现了一个写得很糟糕的触发器,引起了异常。