我正在使用Linq-To-SQL
对具有以下定义的表执行插入操作(省略一些多余的字段):
ID int not null
SourceName varchar(100)
Version int not null
TransactionID int not null
Xml nvarchar(max)
ID
, SourceName
,Version
并TransactionID
构成表的主键。没有外键或约束。
我DataContext
为我的数据库创建一个,然后创建一个新记录。当我调用SubmitChanges
我的 DataContext时,StackOverflowException
会抛出一个。
using (var ctx = new MyDataContext(connectionString))
{
var row = new MyTable
{
ID = 1
, SourceName = "foo"
, Version = 1
, TransactionID = 0 //this is the weird part - see below
, Xml = "some xml string"
}
ctx.MyTable.InsertOnSubmit(row);
ctx.SubmitChanges();
}
但是,经过大量的值替换和反复试验,StackOverflowException
如果我更改为 1,则不会抛出TransactionID
(我最初假设 Xml 字段以某种方式溢出)。
我使用 0 仅用于由于某种原因无法识别事务 id 的情况。
我显然用谷歌搜索了这个,但我发现的唯一相关问题是由外键关系引起的。
有人知道为什么会这样吗?我有一个解决方法,但很好奇可能是什么原因。
我正在使用 .Net 3.5 和 SQL Server 2005。