1

Value1 つのフィールド ( ) と次のマッピングを持つエンティティがあります。

Id(x => x.Value).Column("value").Length(150);

次のコードを実行すると

using (var tx = Database.BeginTransaction())
{
    for (int i = 0; i < 10; i++)
    {
        var e = new Entity { Id = "Value" + i };
        Database.Entities.Add(e);
    }
    tx.Commit();
}

Hibernate は、各呼び出しのSELECT前にステートメントを実行します。INSERTこのようなもの:

NHibernate: SELECT * FROM entity entity_ WHERE entity_.value=@p0; @p0 = 'Value0'
NHibernate: INSERT INTO entity ...
NHibernate: SELECT * FROM entity entity_ WHERE entity_.value=@p0; @p0 = 'Value1'
NHibernate: INSERT INTO entity ...
NHibernate: SELECT * FROM entity entity_ WHERE entity_.value=@p0; @p0 = 'Value2'
NHibernate: INSERT INTO entity ...

一括モード (設定adonet.batch_size) を有効にすると、最初にすべてのSELECTステートメントが実行され、次にINSERT一括モードのステートメントが実行されます。

それは意図した動作ですか?もしそうなら、それを避けるために私は何をすべきですか?

4

1 に答える 1