2012-04-02 11 views
0

私たちは、SQL Server 2008データベースに対して厳密な操作を処理するためにまずEntity Framework 4.31のコードを使用しています。SingleOrDefaultは現在のデータベースの内容を返しません

1)私は

T _return1 = _dbset.Where(O =>!& & o.I_id == ID).Singleをo.F_isdeleted(...データを引き戻すためのDBへの呼び出しを行います);その後、私はその後、手動でSQL Serverの管理スタジオを使用して、データベース上のこの同じレコードへの更新を行う

3)私は_return1内のデータを変更

2)... ...

4)私は同じコールを1(2番目のオブジェクトに)で見つけてデータを取り戻し、dbに行われているSQL Serverプロファイルの呼び出しを監視します。

T _return2 = _dbset.Where(o =>!o.F_isdeleted & & o.I_id == id).Single();

5)私はreturn2の内容を調べたときに私はそれが私が4

でDBに行われ、コールが、私はここで何かをしないのです見ることができるにもかかわらず、データベースから更新されたデータが含まれていません見ることができます??? _return2で現在のdbの内容が表示されませんが、同じコンテンツが _return1に表示されるのはなぜですか?

+0

Management Studioで変更をコミットしてもよろしいですか?そうでない場合は、別のセッションで結果が表示されない理由を説明できます。この現象は、EFクライアントが使用している分離レベルによっても発生する可能性があります。私は、デフォルトの "read committed"は反復不可能な読み込みを許可しますが、おそらくあなたは別のレベルを使用していると思いますか? –

答えて

0

正確な問題はわかりませんが、トラブルシューティングの最善の方法は、データベースを呼び出すときにどのSQLエンティティフレームワークが生成しているかを最初に確認することです。手動で行うことも、LinqPadを使うことも、何かをインストールすることもできますhttp://code.google.com/p/mvc-mini-profiler/

関連する問題