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を呼び出すと、 aStackOverflowException
がスローされます。
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();
}
ただし、多くの値の置換と試行錯誤の後、 1StackOverflowException
に変更してもスローされませんTransactionID
(最初は、Xml フィールドが何らかの形でオーバーフローしていると想定していました)。
何らかの理由でトランザクション ID を識別できなかったシナリオのためだけに 0 を使用していました。
私は明らかにこれをグーグルで検索しましたが、私が見つけた唯一の関連する問題は、外部キー関係が原因でした.
なぜこれが起こっているのか誰にも分かりますか?回避策はありますが、何が原因なのか興味があります。
.Net 3.5 と SQL Server 2005 を使用しています。