2

我正在使用Linq-To-SQL对具有以下定义的表执行插入操作(省略一些多余的字段):

ID int not null
SourceName varchar(100)
Version int not null
TransactionID int not null
Xml nvarchar(max)

ID, SourceName,VersionTransactionID构成表的主键。没有外键或约束。

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。

4

0 回答 0