c# - 身份主列的 InsertOrUpdate 引发错误
问题描述
我正在关注使用 Entity Framework Core 和 SQL Server 的 InsertOrUpdate 文章。
http://blog.linq2db.com/2015/05/linq-crud-operations.html
所以我的 linq2db 查询与他们的文档相同。
using (var db = new DataConnection())
{
db.GetTable<TestTable3>()
.InsertOrUpdate(
() => new TestTable3
{
ID = 5,
Name = "Crazy Frog",
},
t => new TestTable3
{
Name = "Crazy Frog IV",
});
}
但在我的情况下Id
是自动递增的身份主列。所以我收到如下错误。
System.Data.SqlClient.SqlException: 'Cannot insert explicit value for identity column in table 'TestTable3' when IDENTITY_INSERT is set to OFF.'
现在我知道无法提供身份列。但是如果我不提供,那么它会抛出错误
LinqToDB.Linq.LinqException: 'InsertOrUpdate method requires the 'TestTable3.Id' field to be included in the insert setter.'
解决方案
如果您不需要检索刚刚插入的值,则 InsertOrUpdate 函数的重载具有重复键的附加参数:
using (var db = new DataConnection())
{
db.GetTable<TestTable3>().InsertOrUpdate(
() => new TestTable3
{
Name = "Crazy Frog"
},
e => new TestTable3
{
Name = "Crazy Frog"
},
() => new TestTable3
{
ID = 5
});
}
推荐阅读
- python - 二元交叉熵计算中的 pos_weight
- ubuntu - 在lfs中不知不觉跳过了一步
- javascript - 很少有字段没有使用 redux 表单中的初始值进行更新
- java - 在 Java 中转换为 List 结果
- android - 如何使用带有 Kotlin 的 Gson 库访问 JSON 有效负载中的嵌套值
- react-native - 使用 react-native-navigation 时将道具传递给底部导航
- javascript - 为什么一次又一次地加载背景图像?
- python - 有没有办法强制 numpy.set_printoptions 显示确切的浮点值?
- javascript - 在编辑页面 AdminBro 中单击保存时执行脚本
- python - 解决分数的函数不适用于负数或零