C# 查询未尝试插入标识列,但获取错误:无法插入显式。。。标识列。。。当“标识插入”处于禁用状态时
我只是尝试将一条新记录插入SQL Server数据库。插入是在使用LINQ的WCF web服务中进行的 表d_coord_report_conflict的结构如下:C# 查询未尝试插入标识列,但获取错误:无法插入显式。。。标识列。。。当“标识插入”处于禁用状态时,c#,sql,linq,sql-server-2008,C#,Sql,Linq,Sql Server 2008,我只是尝试将一条新记录插入SQL Server数据库。插入是在使用LINQ的WCF web服务中进行的 表d_coord_report_conflict的结构如下: conflict_report_id int NOT NULL IDENTITY PRIMARY KEY, booking_id int, conflict_date date, coord_user_id int guide_one_user_id int, guide_two_user_id int, product_id in
conflict_report_id int NOT NULL IDENTITY PRIMARY KEY,
booking_id int,
conflict_date date,
coord_user_id int
guide_one_user_id int,
guide_two_user_id int,
product_id int,
price_id int
除了冲突报告id和冲突日期之外,所有内容都是外键。
以下是C中WCF服务的插入:
d_coord_report_conflict conflict = new d_coord_report_conflict
{
booking_id = bookingID,
conflict_date = date,
coord_user_id = Convert.ToInt32(item.coordID),
guide_one_user_id = pax.user_id_guide,
guide_two_user_id = Convert.ToInt32(item.guideID),
product_id = Convert.ToInt32(item.productID),
price_id = Convert.ToInt32(item.priceID)
};
db.d_coord_report_conflicts.InsertOnSubmit(conflict);
db.SubmitChanges();
它应该是一个直接插入,但会不断抛出以下错误:
当identity_insert设置为OFF时,无法在表“d_coord_report_conflict”中为identity列插入显式值
就我所知,这不应该发生。此外,打开IDENTITY_INSERT并不是一个可接受的解决方案,我相信您会理解这一点
更新:在将每个字段的值传递到LINQ查询并尝试从SQLServerManagementStudio中手动插入时,我恢复了这些字段的值,效果良好。完全没有错误。有什么想法吗
提前感谢。您在方法db.d\u coord\u report\u conflicts.InsertOnSubmitconflict中写了什么查询? 无论它是存储过程,还是c中的内联sql查询,请检查列名和顺序是否正确。 请记住:在INSERT查询中不能传递值/提及标识列的名称 如果你的桌子是这样的
Create table Test
{
testId int not null identity primary key,
testName varchar(50), createdDate datetime
}
您的INSERT查询应该类似于
INSERT INTO TEST(testName,createdDate) values ('New Test', getdate())
注意,我没有在insert查询中的任何地方提到标识列,因为它的值是自动填充的
希望这有意义 相关的: