2

Linq-To-SQL次の定義を持つテーブルへの挿入を実行するために使用しています(いくつかの余分なフィールドを省略しています):

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

IDSourceNameVersionおよびTransactionIDは、テーブルの主キーを形成します。外部キーや制約はありません。

データベース用に を作成してDataContextから、新しいレコードを作成します。SubmitChangesDataContextを呼び出すと、 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 を使用しています。

4

0 に答える 0