への個別のヒットとして示す作業複数のインサートの単位:データベースへのシングルヒットを生成する必要がありますEF 4.3、私はこのコードを持っているDB
using (var context = new MyContext())
{
var uow = new UnitOfWork(context);
var userService = new UserService(uow);
var gameService = new GameService(uow);
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
userService.AddUser();
gameService.AddGame();
uow.Commit();
Console.Read();
}
を。私はSQLプロファイラを見ていて、それは複数のヒットのように見えます(または間違っていますか?)。ここで、これはただの複数の挿入をスクリーンショット(私は何の影響もなかったテーブルに偽のデータを挿入されたテーブルの名前を気にしないでください)
示す場合、またはデータベースには、この別のヒットでいます?
EDIT:拡大写真は、私は一つの接続は、監査ログインを見て、その後、その後、1監査ログアウト11挿入文、開かれている参照here
ヒットが分かれています。 1行を参照してください。これは、挿入されたもので、割り当てられたIdの選択です。つまり、1回のヒットです。私が知る限り、NHibernateは複数のクエリを1つのパッケージにまとめた唯一のormです(この共通のinsert-selectペアは別です)。 –
@GertArnold - EFに複数のエンティを追加してコミットする方法はありませんか?私はそれがUnitOfWorkパターンの全体のポイントだと思った。 – Ryan
1つのヒットを1つのステートメントとしてデータベースに送信すると考えると、EFは行コンストラクターを使用して1つのステートメントを作成する必要がありますが(SQL Server 2008で動作した場合)生成されたidは新しいオブジェクトに戻ります。 –