C# 数据模型是dbml,从sqlserver转sqlite,事务中InsertOnSubmit出错

一个桌面程序,数据库要从sqlserver转到sqlite,我还在研究中,只是想把目前理解到的信息发出来,希望有类似经验的人能一针见血
数据模型是dbml的,一次insert为例

DBModel.Test data=...
 DataContext dc = theDB.GetDataContext();
            dc.GetTable<DBModel.Test>().InsertOnSubmit(data);
            dc.SubmitChanges();

数据库连接已经变了,在某次操作中,不用事务,且只进行一次如上操作时,没有问题。如果操作中,有2次以上如上操作时,原来的程序是用事务的,在第一次如上操作时就报错,
图片说明
我把第一次的操作改成insert into Test。。。的sql语句,执行能过去,到了下一个操作又报同样的错误。

以下2017年9月29日 11:28:35
听了caozhy的建议。我去看了生成的sql。不报错的是类似这样的


exec sp_executesql N'INSERT INTO [dbo].[CustomerInfo]([customerNo], [customerType], [contractNo], [customerName])
VALUES (@p0, @p1, @p2, @p3, @p4)',N'@p0 nvarchar(4000),@p1 int,@p2 nvarchar(4000),@p3 nvarchar(4000),@p4 nvarchar(4000)',@p0=N'1000000150',@p1=0,@p2=N'',@p3=N'321654987',@p4=N'321654987'

而报错的是这样的


exec sp_executesql N'INSERT INTO [dbo].[ReceiptItemDetial]([ReceiptNo], [items], [Unit], [Price], [Quantity], [subTotal], [remark])
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6)

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 int,@p1 nvarchar(4000),@p2 nvarchar(4000),@p3 decimal(18,3),@p4 decimal(18,3),@p5 decimal(18,3),@p6 nvarchar(4000)',@p0=14402,@p1=N'sdfg',@p2=N'元/米',@p3=1.000,@p4=1.000,@p5=1.000,@p6=N''

看了sql。我想起了这些表的差别了。不报错的那几个表,主键是nvarchar,而报错的那几个,主键是int,自增的。或许这就是他们sql语句不同的原因?也是转到sqlite错误的原因?

1个回答

用sqlprofiler看下生成的sql有什么错误,特别是模型不同步,修改了表。

hlxaaa
hlxaaa 谢谢。我去查过了。更新了一下问题。希望你能再给点建议
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!