0

という EF4 EDM がありUnitHistoryEntitiesます。データベースは SQL Express 2012 に格納されています。Windows 7 64 ビット。

  1. で新しいコンテキストを作成しますcontext = new UnitHistoryEntities()
  2. このコンテキストを、ユーザーから少しの情報を収集するいくつかのダイアログ ボックスに渡します。この間にいくつかのクエリが実行された可能性があります。
  3. その入力に基づいて、新しい Unit エンティティを で構築しvar unit = new Unit()、いくつかのプロパティを設定して、コンテキストに追加しますcontext.Units.AddObject(unit)
  4. 私はそれから電話しますcontext.SaveChanges()

never, everへの呼び出しSaveChanges()は返され (少なくとも 10 分与えました)、例外をスローすることはありません。を削除するとAddObject()、何も変更されていないため、データベースに変更を加えずに戻ります。

なぜSaveChanges()二度と戻らないのですか?この現象を経験した人はいますか?

プログラムがこの状態にある間、SQL Management Studio からデータベースに接続してクエリを実行できます。

4

3 に答える 3

0

私が抱えている問題は、この質問に非常に似ていることがわかりました。設定していない DateTime フィールドがあります。アプリケーションが実行していたコンテキストでまったく同じアクションを実行するコンソール アプリを作成しました。この場合、例外を除いて戻りましSaveChanges() The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated.

そこで、DateTime フィールドを 1900 年 1 月 1 日に設定し、それを null の日付として扱います。プログラムが正常に動作するようになりました。

WPF アプリケーションで例外がスローされなかったのは奇妙ですが、コンソール アプリケーションでは例外がスローされました...

于 2012-12-16T18:47:52.540 に答える
0

その機能がテーブルに追加されるエンティティ、各テーブルには自分自身と呼ばれる機能があります。エンティティを使用してデータベースに以下を追加できます。

UnitHistoryEntities context=new UnitHistoryEntities();
Unit unit=new Unit();
unit.field1=value1;
unit.field2=value2;
context.AddtoUnit(unit);
context.SaveChange();
于 2012-12-16T06:40:56.760 に答える