hlxaaa 2017-09-28 08:42 采纳率: 41.9%
浏览 894

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条回答 默认 最新

  • threenewbee 2017-09-28 15:55
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题