2017-08-09 6 views
1

私はEntity Framework Core HiLoパターンで "Hi"パートはデータベースで管理され、 "Lo"パートはEntity Frameworkによってメモリで管理されています。EntityFramework Core HiLo

エンティティフレームワークは、データベースへのラウンドトリップなしで "Lo"パートをどのように生成しますか?

リクエスト間の "Lo"値はどのように維持されますか?

最も重要なのは、このパターンのスレッドの安全性ですか?

ありがとうございます!

答えて

2

HiLoジェネレータは、必要に応じてクライアント上のIDを使用してサーバ上のIDのブロックを予約することによって動作します。ブロックを予約するときにデータベースをヒットする必要があるだけなので、ブロックサイズが100の場合は100 IDごとにラウンドトリップします。

はい、データベースサーバによってブロックがアトミックに割り当てられているため、複数のコンテキストで同時にIDを割り当てることは安全です。各DbContextインスタンスにはそれぞれ独自のブロックがあります。

関連する問題