1

こんにちは、LinqToSql オブジェクトを使用して .sdf ファイルにデータを保存しようとしています。次のようなテーブルがあります-

PersonId int not null pk
forename nvarchar(4000)
surname nvarchar(4000)
Birthdate DateTime
IsMale bit
Biography nvarchar(4000)

PersonId 列以外のすべてのフィールドに値を挿入しています (identity、increment に設定)。

私はのC#コードを使用しています

myLinqToSqlObject.Persons.InsertOnSubmit(thisPerson);

それから

 thisDataContext.SubmitChanges();

「呼び出しのターゲットによって例外がスローされました」という例外が発生します。「Varchar」だけの内部例外

誰かが私が間違っていることを知っていますか?

ありがとう

編集 - thisPerson に入力するコードの表示

thisPerson.Forename = thisDlg.Forename;
thisPerson.Surname = thisDlg.Surname;
thisPerson.Biography = thisDlg.Biography;
thisPerson.IsMale = thisDlg.IsMale;
thisPerson.BirthDate = thisDlg.BirthDate;

すべてのフィールドが値を返す場所 (null 値なし)

4

2 に答える 2

1

DataContext には Log プロパティがあります。StreamWriter をそれに割り当ててファイルまたは添付の Console.Out に書き込むと、コンテキストによって生成された SQL が書き込まれ、クエリをより適切にデバッグできる可能性があります...

また、何が起こっているのかを把握するには、変更を送信する前に context.GetChangeSet() を呼び出し、イミディエイト ウィンドウと VS デバッグを使用して、このコレクション内にあるものを確認します (挿入、更新、および削除が実行されています)。

そうすることで、より早く答えを導き出すことができます...

于 2010-03-10T20:44:04.913 に答える
0

Visual Studio 2010 を使用して DBML に SDF ファイルを作成するには、Visual Studio 2010 のコマンド プロンプトで次の行を入力して実行します。

SqlMetal.exe "EnterFilePath\CloudKase.sdf" /dbml:"EnterFilePath\CloudKase.dbml"

また、この SDF および DBML ファイルは Visual Studio 2012 で使用されており、簡単にアクセスしてコードを実装できます。

ハッピーコーディング:)

于 2014-03-13T05:08:23.570 に答える