Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查询未尝试插入标识列,但获取错误:无法插入显式。。。标识列。。。当“标识插入”处于禁用状态时_C#_Sql_Linq_Sql Server 2008 - Fatal编程技术网

C# 查询未尝试插入标识列,但获取错误:无法插入显式。。。标识列。。。当“标识插入”处于禁用状态时

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

我只是尝试将一条新记录插入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 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查询中的任何地方提到标识列,因为它的值是自动填充的 希望这有意义

相关的: