【问题标题】:Insert using Linq-to-SQL where IDENTITY_INSERT is set to OFF使用 Linq-to-SQL 插入,其中 IDENTITY_INSERT 设置为 OFF
【发布时间】:2018-11-29 19:18:47
【问题描述】:

我正在尝试向表中插入新行而不插入标识。我只是插入到其他列中。我希望自动创建身份。

简化代码:

Table<Class1> customers = db.GetTable<Class1>();
customers.InsertOnSubmit(new Class1 { Prop1 = "test });
try { db.SubmitChanges(); }
catch (ChangeConflictException ex) { }

我收到以下错误:

无法在表“日志”中为标识列插入显式值 IDENTITY_INSERT 设置为 OFF。

我假设 Linq2SQL 会自动更新所有列。但是我该如何解决呢?我什至试图从课程中省略该列,但是 Linq2SQL 告诉我:

无法对“表(Class1)”执行创建、更新或删除操作 因为它没有主键。

【问题讨论】:

    标签: sql sql-server linq-to-sql


    【解决方案1】:

    您的财产应具有以下属性:

    [Column(Storage="ColumnID", AutoSync=AutoSync.Always, DbType="Int NOT NULL 
         IDENTITY", IsDbGenerated=true)]
    public int ColumnID 
    

    如果您的列表在数据库中具有自动标识,请尝试重新创建或更新您的 LINQ TO SQL DB 上下文。

    【讨论】:

    • 谢谢。但我不想插入身份。我希望它自动创建。
    • 谢谢。我会试试的。我假设这是第一个代码的而不是。对吗?
    • IsDbGenerated=true 做到了。谢谢!
    • @ispiro 很高兴为您提供帮助!:)
    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多