NHibernate でマップしたデータベース ビューの 1 つで奇妙な問題が発生しているようです。マップしたビューの 1 つで重複したレコードを取得しています。次のビューオブジェクトがあります
WorkDetailView
/ \
/ \
/ \
/ \
PickWorkDetailView PutWorkDetailView
各オブジェクトはデータベース内の異なるビューを表しますが、多くの同じフィールドを共有しているため、PickWorkDetailView
とPutWorkDetailView
から継承されます。WorkDetailView
次のコードを実行すると、2 つの結果が得られますが、SQL Management Studio で実際のデータベース ビューを実行すると、1 つの結果が得られます。
List<WorkDetailView> workList = session.QueryOver<WorkDetailView>()
.List<WorkDetailView>().ToList();
興味深い点は、workList
上記のコレクションのすべてのアイテムを見ると、1 つのWorkDetailView
オブジェクトと 1 つのPickWorkDetailView
オブジェクトが表示されることです。また、NHibernate が実行しているクエリを見ると、3 つのビュー (WorkDetailView、PickWorkDetailView、および PutWorkDetailView) からの選択が発行されます。これはまったく正しく聞こえません。必要に応じて、xml マッピングまたは流暢なマッピングを投稿できます。