25

このようなものがうまくいかない理由はありますか?

これは、LINQ を使用してテーブル内のレコードを更新するために何度も使用したロジックです。

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();

(updateUser.InUse はビットフィールドです)

何らかの理由で機能していません。linq.log を確認すると、完全に空白です。

.dbml に問題がある可能性はありますか? 他のテーブルは正常に動作しているようですが、.dbml のプロパティを比較したところ、すべて一致しました。

のようですdb.SubmitChanges()。更新が必要であることを検出しません。

4

2 に答える 2

75

主キーがないため、テーブルを正しく更新できませんでした。(実際には列がありましたが、開発テーブルに SELECT INTO を実行したときに制約がコピーされませんでした)。DataContext クラスには、更新用の主キーが必要です。

于 2008-10-16T13:12:02.173 に答える
2

LINQに関する限り、InUseプロパティは「通常の」プロパティですか?(たとえば、自動生成されていないか、そのようなファンキーなものではありませんか?)

あるいは、現在の値がnullのNullable <bool>だとは思いませんか?その場合、更新行は実際には何もしていません-null許容ブール値の場合、!null=nullです。

于 2008-10-15T21:22:31.340 に答える