2016-11-26 1 views
0

私はNHibernate ISessionをC#で使用しています。私はFluentまたはIStatelessSessionまたはidentityを使用していません。私は識別子のためにguid.combを使用しています。NHibernate - "adonet.batch_size"と "ISession.SetBatchSize()"は同じですか?

データアクセスレイヤーでバッチ処理を実装していますが、設定に関する混乱があります。

私はwebとStack Overflowを検索すると、設定ファイルで次のプロパティを "1"に設定するよう求めている人がいました。

<property name="adonet.batch_size">1</property> 

また、必要に応じて次のように電話する必要があります。

ISession.SetBatchSize(100); 

ADO.NETでのバッチ処理を可能にしますadonet.batch_size 1に設定し、バッチ処理の決定についてNHibernateのを教えてくれますSetBatchSize()を呼び出します。

これは私を混乱させます。私は両方の人が構成するためにちょうど異なる方法と場所で同じ仕事をすると思う。だから両方の方法を使う必要はありません。私はいずれかを使用してバッチ処理を達成する必要があります。

お勧めします。

参考文献:

Link1

:プロパティは次の例外がスローされ、設定ファイルに設定されていない場合の質問は言う:

ませバッチサイズはセッションファクトリのために定義されていなかった、バッチ処理が無効になっ です。バッチ処理を有効にするには、adonet.batch_size = 1に設定します。

Link2:「2009年12月14日」の「Kris-I」の回答を参照してください。また、以下のように彼のコメントを参照してください。

私は私はあなたが設定ファイルに配置する必要がありましたラインだと思う - クリス-I

Link3を:受け入れられた答えを参照してください。最初にadonet.batch_sizeが設定され、次にSetBatchSize()が呼び出されます。

Link4このNHibernate文書は、ISession.SetBatchSize()を全く言及していない。

+0

実行時に 'SetBatchSize()'が設定値を設定するという印象を受けます(https://ayende.com/blog/3786/nh-prof-alerts-use-statement-batching)。実行時に 'SessionFactory'の設定を見ることでこれを調べることができます。 –

+0

設定はバッチのサイズを制御します。私。 1つのグループでサーバーに送信されるステートメントの数。値が1の設定がどのように役立つのか、私は理解していません。 –

+0

@DavidOsborne:まさに私の混乱です。また、なぜ私は同じことを2回設定する必要がありますか? –

答えて

0

私はいくつかの自習を行い、両方が同じであることを発見しました。

<property name="adonet.batch_size">10</property>設定ファイルでバッチサイズを設定できます。コードで明示的に設定しないと、これはデフォルトのバッチサイズと似ています。

ISession.SetBatchSize(10);実行時にバッチサイズを設定できます。これを呼び出すと、設定ファイルに設定された値が上書きされます。

両方を行う必要はありません。どのような方法でもあなたのシナリオに合った仕事ができます。

結論:

それらの両方を設定するには、ちょうど別の方法と場所で同じ仕事をします。だから両方の方法を使う必要はありません。いずれかを使用してバッチ処理を行うことができます。

関連する問題