我正在使用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
,然后创建一个新记录。当我在DataContext上调用SubmitChanges
时,会抛出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({I}我最初认为Xml字段溢出来了),TransactionID
就不会被抛出。
我只是因为某些原因无法识别交易ID的情况而使用0。
我显然用Google搜索了这个,但我找到的唯一相关问题是由外键关系造成的。
任何人都知道为什么会这样吗?我有一个工作但很好奇可能是什么原因。
我正在使用.Net 3.5和SQL Server 2005。