我有一个C#.NET Web应用程序,我想在id上创建一个自动增量。我无法弄清楚我做错了什么,但我不断收到错误,因为它没有增加。
错误:
无法将值NULL插入列' Id',table' Samen de Zorg.dbo.BulletinItem&#39 ;;列不允许空值。 INSERT失败。
声明已经终止。
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "UserID,Title,Description")] BulletinItem bulletinItem)
{
//
if (ModelState.IsValid)
{
db.BulletinItem.Add(bulletinItem);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(bulletinItem);
}
型号:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string UserID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<BulletinReaction> BulletinReaction { get; set; }
XML模型:
<EntityType Name="BulletinItem">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="UserID" Type="nvarchar" MaxLength="256" Nullable="false" />
<Property Name="Title" Type="nvarchar" MaxLength="50" Nullable="false" />
<Property Name="Description" Type="nvarchar(max)" Nullable="false" />
</EntityType>
SQL中的模型:
CREATE TABLE [dbo].[BulletinItem]
(
[Id] INT NOT NULL,
[UserID] NVARCHAR (256) NOT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Description] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_BulletinItem]
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_BulletinItem_AspNetUsers]
FOREIGN KEY ([UserID]) REFERENCES [dbo].[AspNetUsers] ([UserName])
);
答案 0 :(得分:1)
你需要在SQL中使用你的模型不仅要说NOT-NULL而且要在AUTO_INCREMENT之间添加一个空格。