Getting Error: Cannot insert explicit value for identity column in table 'Table' when IDENTITY_INSERT is set to OFF
Getting Error: Cannot insert explicit value for identity column in table 'Table' when IDENTITY_INSERT is set to OFF
我有简单的DataTable
CREATE TABLE [dbo].[Table] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有一条记录,Name="Test"
Id
自动得到 0.
当我使用基本的创建操作时
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Table table)
{
if (ModelState.IsValid)
{
db.Table.Add(table);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(table);
}
我收到错误:
Cannot insert explicit value for identity column in table 'Table' when
IDENTITY_INSERT is set to OFF.
我做错了什么?如何修复此错误?
Table class
public partial class Table
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
您需要将 IsDbGenerated
设置为 true
。然后将 System.Data.Linq
添加到您的参考资料中:
[System.Data.Linq.Mapping.Column(Storage = "Id", DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get; set; }
闻起来像是您从参数 (Table table
) 中检索到的 table 正在将 属性 Id
设置为 0
之外的其他值.
如果是这种情况,请确保在 db.Table.Add(table);
之前将 Id
设置为 0
如果您想要更新项目(如果它存在),那么您需要在添加之前检查 Id
是否为 0
。
if(table.Id == 0)
db.Table.Add(table);
db.SaveChanges();
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
这对我有用。
我有简单的DataTable
CREATE TABLE [dbo].[Table] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有一条记录,Name="Test"
Id
自动得到 0.
当我使用基本的创建操作时
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Table table)
{
if (ModelState.IsValid)
{
db.Table.Add(table);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(table);
}
我收到错误:
Cannot insert explicit value for identity column in table 'Table' when IDENTITY_INSERT is set to OFF.
我做错了什么?如何修复此错误?
Table class
public partial class Table
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
您需要将 IsDbGenerated
设置为 true
。然后将 System.Data.Linq
添加到您的参考资料中:
[System.Data.Linq.Mapping.Column(Storage = "Id", DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get; set; }
闻起来像是您从参数 (Table table
) 中检索到的 table 正在将 属性 Id
设置为 0
之外的其他值.
如果是这种情况,请确保在 db.Table.Add(table);
Id
设置为 0
如果您想要更新项目(如果它存在),那么您需要在添加之前检查 Id
是否为 0
。
if(table.Id == 0)
db.Table.Add(table);
db.SaveChanges();
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
这对我有用。