C# 获取错误:无法在表';表';当IDENTITY_INSERT设置为OFF时

C# 获取错误:无法在表';表';当IDENTITY_INSERT设置为OFF时,c#,asp.net,sql-server,asp.net-mvc,entity-framework-5,C#,Asp.net,Sql Server,Asp.net Mvc,Entity Framework 5,我有简单的DataTable CREATE TABLE [dbo].[Table] ( [Id] INT IDENTITY (1, 1) NOT NULL, [Name] NCHAR (10) NULL, PRIMARY KEY CLUSTERED ([Id] ASC) ); 对于一条记录,Name=“Test”Idget的自动0 当我使用基本创建操作时 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Cre

我有简单的
DataTable

CREATE TABLE [dbo].[Table] (
[Id]   INT        IDENTITY (1, 1) NOT NULL,
[Name] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
对于一条记录,
Name=“Test”
Id
get的自动0

当我使用基本创建操作时

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Table table)
{
    if (ModelState.IsValid)
    {
        db.Table.Add(table);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(table);
}
我得到一个错误:

在以下情况下,无法在表“table”中插入标识列的显式值 标识\u插入被设置为关闭

我做错了什么?如何修复此错误

表类

public partial class Table
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Name { get; set; }
}
您需要设置为
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
)检索的表正在将属性
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; }