次のIQueryable<T>
リポジトリがある場合:
public class OrderRepository : GenericRepository<Order>, IOrderRepository
{
public IQueryable<Order> Find()
{
return Context.CurrentEntitySet;
}
}
そして、私はそれを次のように使用して特定の注文を取得します:
var order = orderRepository.Find().SingleOrDefault(x => x.OrderId == 1);
すべて良好。
今、私はEDMX に追加した OrderDetailsViewと呼ばれる SQL Server 2008 ビューを持っています。参加したいOrderIdというフィールドがあります。OrderとOrderDetailsViewの間は1 対 1です。
特定の Order と、対応する OrderDetailsView レコードを返したい。
ここでの正しいアプローチが何であるかはわかりません。
Order エンティティのビューにナビゲーション プロパティを設定できますか? アソシエーションを追加できますが、デザイナーはそれがマッピングされていないと不平を言っています.FKが必要だと思いますが、明らかにViewにはFKを含めることはできません。
明示的な結合を行う必要がありますか? もしそうなら、それはそれらが関連付けのない独立したエンティティであることを意味するので、別のリポジトリが必要になります.2つのリポジトリ間でJOINを実行できないため、2つのデータベース呼び出しが必要です.
理想的には、私はこれをしたいと思います:
return ctx.Orders.Include("OrderDetailsView").SingleOrDefault();
しかし、前述のように、View を指すナビゲーション プロパティを追加できるかどうかはわかりません。
何か案は?