sql - 使用 Linq-to-SQL 插入,其中 IDENTITY_INSERT 设置为 OFF
问题描述
我正在尝试在不插入标识的情况下将新行插入表中。我只是插入到其他列。我希望自动创建身份。
简化代码:
Table<Class1> customers = db.GetTable<Class1>();
customers.InsertOnSubmit(new Class1 { Prop1 = "test });
try { db.SubmitChanges(); }
catch (ChangeConflictException ex) { }
我收到以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Log”中插入标识列的显式值。
我假设 Linq2SQL 会自动更新所有列。但是我该如何解决呢?我什至试图从课堂上省略该列,但随后 Linq2SQL 告诉我:
无法对“表(Class1)”执行创建、更新或删除操作,因为它没有主键。
解决方案
您的财产应具有以下属性:
[Column(Storage="ColumnID", AutoSync=AutoSync.Always, DbType="Int NOT NULL
IDENTITY", IsDbGenerated=true)]
public int ColumnID
如果您的列表在数据库中具有自动标识,请尝试重新创建或更新您的LINQ TO SQL
数据库上下文。
推荐阅读
- java - 图像比较性能java
- javascript - 如何使用 ActiveAdmin 传递窗口变量
- javascript - node js从302重定向获取cookie
- arrays - 如何将一个数组拆分为多个子数组
- windows - 将与 Tomcat servlet 容器捆绑在一起的 Teamcity 配置为 Windows 服务
- vue.js - nuxt.js 中的 JWT 授权
- pyqt5 - setStatusTip PyQT5 不会更新 statusBar
- rust - Rust serde_json 序列化器用于 [u8; 的漂亮打印;32]
- java - 根据情况使用 CascadeType.MERGE 和 CascadeType.PERSIST
- node.js - 使用 Nightwatch.js 上传动作