【问题标题】:cannot insert explicit value to identity column INSERT_OFF无法将显式值插入标识列 INSERT_OFF
【发布时间】:2011-04-21 00:27:13
【问题描述】:

我已经在一个 asp mvc 项目上工作了几个星期。我已经通过 linq 使用没有问题的实体从数据库中插入和删除了东西。直到现在。

我使用默认布局创建了我的项目。所以在用户注册后的 AccountController 上我想在我的数据库中注册信息

Client:
IdClient
Name
LastName

我通过表格询问此信息,然后执行以下操作:

Client client = new Client();
client.Name = model.Name;
client.LastName = model.LastName
storeDB.Clients.Add(client);
storeDB.SaveChanges();

Note that I'm not attempting to insert anything on the IdClient

The class looks like:
public class Client{

  [Key]
   public int IdClient {get; set;}
   public string Name {get; set;}
   public string LastName {get; set;}
}

我已经毫无问题地插入了其他表,但是这个给我一个: 当 IDENTITY_INSERT 设置为 OFF 时,无法在表“客户端”中插入标识列的显式值。

异常详细信息:System.Data.SqlClient.SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“客户端”中插入标识列的显式值。

我检查了一下,桌子上的一切看起来都很正常,身份只有 IdClient!有人知道我为什么会得到这个吗? =S 我认为这与我在 AccountsController 中执行此插入的事实没有任何关系,这没有任何意义....

更新:我插入了另一个表,但它并没有标记我该错误,我不明白...我创建它们时相同!我用一个名为 CLIENT 的表创建了一个数据库,但它不起作用!有人知道我可以在哪里寻找问题吗? =S

-我想在标识列中插入一个值,我尝试在显示表数据上添加一个新行,我手动将值引入到 Name 和 Last name,单击 ENTER 并该行已创建,但是当我通过查询执行此操作时,它不允许我这样做。

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc linq linq-to-entities


    【解决方案1】:

    检查映射类的主键。它应该有一个类似这样的属性:

        [Column(Storage="_LetterOID", AutoSync=AutoSync.OnInsert, 
         DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
    

    重要的一点是 IsDbGenerated=true。如果您的属性缺少该属性,我们发现了错误!如果您正在使用设计器,只需重新生成此类(通过删除设计器中的表并将其从服务器资源管理器中删除)。

    这曾经为我解决了这个问题。

    【讨论】:

    • 我不想插入到键值中,也不想插入到键值中...是这个的答案吗?让我检查一下。我用脚本而不是类创建了它。使用 EF 图!!
    【解决方案2】:

    正如 Andrei 所说,请检查您的设计师。 编写这两个表并确认有效的表确实有一个标识列。 尝试为两个插入运行分析器,它们插入的所有列是否相同?

    需要更多信息来回答这个问题。

    【讨论】:

    • 它让我手动将它插入到显示表数据中,这意味着什么? =S
    猜你喜欢
    • 2015-10-27
    • 2016-04-13
    • 2015-07-02
    • 2019-05-28
    • 1970-01-01
    • 2017-03-05
    • 2018-12-12
    相关资源
    最近更新 更多