0

次の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というフィールドがあります。OrderOrderDetailsViewの間は1 対 1です

特定の Order と、対応する OrderDetailsView レコードを返したい。

ここでの正しいアプローチが何であるかはわかりません。

  • Order エンティティのビューにナビゲーション プロパティを設定できますか? アソシエーションを追加できますが、デザイナーはそれがマッピングされていないと不平を言っています.FKが必要だと思いますが、明らかにViewにはFKを含めることはできません。

  • 明示的な結合を行う必要がありますか? もしそうなら、それはそれらが関連付けのない独立したエンティティであることを意味するので、別のリポジトリが必要になります.2つのリポジトリ間でJOINを実行できないため、2つのデータベース呼び出しが必要です.

理想的には、私はこれをしたいと思います:

return ctx.Orders.Include("OrderDetailsView").SingleOrDefault();

しかし、前述のように、View を指すナビゲーション プロパティを追加できるかどうかはわかりません。

何か案は?

4

1 に答える 1

0

わかりました-参照制約を追加する必要がありました(FKがないため):

代替テキスト

これで、他のナビゲーションと同じようにビューを積極的にロードできます。

うーん、思ったより簡単でした!:)

于 2011-01-06T23:45:43.040 に答える