2010-12-16 16 views
0

asp.net Webアプリケーションで最新のEFコードファーストCTPを使用すると、問題が発生したようです。コードの欠如(今のところ)を言い訳してくださいが、私はうまく説明しようとします。EFコード最初の "トランザクションの問題"

私のコントローラでは、DIコンテナ経由でリポジトリファクトリとIDataContextを注入しています。 IDataContextは私のDbContextへのインターフェースにすぎず、リポジトリ・ファクトリ自体にもこれらのいずれかが注入されます。

私の問題は、aリポジトリから(工場出荷時)リポジトリからユーザを取得し、使用している(DataContext)ブロックの中にいくつかのプロパティを追加すると、変更が保存されません。

新しいユーザーを作成しても問題ありません。しかし、ユーザーのICollectionにレコードを追加すると、レコードは保持されません。

1つのDataContextを使用してユーザーを作成し、別のDataContext(ブロックを使用する場合は両方)を使用してレコードを追加するテストを作成しました。そして、それはうまくいきます(このcreate-dispose-create-disposeシーケンスで)。あるいはその前に...

私は釘付け明日の問題を持っている必要があります -

私の推測では、コントローラに、IDataContextの異なるインスタンスがデータベースに送信されたコマンドに影響を与えているということです。しかし、私は問題を追跡することができない場合は、任意の提案はまだいいだろう。

+0

私はあなたのような問題を抱えていましたが、トランザクションがnullになるほどで​​す。 OnActionExecutingであるControllerイベントをオーバーライドし、トランザクション値を設定しました。 – paragy

+0

DbContext自体のインスタンスをトランザクションとして使用していましたか?または、インスタンスがSaveChanges()を呼び出すたびに、データベースの現在の状態を反映するようにすべてのインスタンスを更新することで、DbContextをシングルトン(IoCバインディングを介したSingletonのように)にしていましたか? – nick

答えて

0

私はそれを修正することができました。基本的に私は、DependencyResolverに、私のDbContextのインスタンスがリクエストごとであることを伝える必要がありました。

希望すると、誰かが面倒な時間を節約できます。

関連する問題