标识主列的 InsertOrUpdate 抛出错误
InsertOrUpdate throwing error for identity primary column
我正在关注使用 Entity Framework 核心和 SQL 服务器的 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
});
}
我正在关注使用 Entity Framework 核心和 SQL 服务器的 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
});
}