如果我有以下IQueryable<T>
存储库:
public class OrderRepository : GenericRepository<Order>, IOrderRepository
{
public IQueryable<Order> Find()
{
return Context.CurrentEntitySet;
}
}
我像这样使用它来获得特定的订单:
var order = orderRepository.Find().SingleOrDefault(x => x.OrderId == 1);
一切皆好。
现在,我有一个名为OrderDetailsView的 SQL Server 2008 视图,我已将其添加到我的 EDMX 中。它有一个我想加入的名为OrderId的字段。这是Order和OrderDetailsView之间的1-1。
我想返回一个特定的订单,以及相应的 OrderDetailsView 记录。
我不确定这里的正确方法是什么。
我可以在我的 Order 实体上拥有 View 的导航属性吗?我可以添加关联——但设计师抱怨它没有被映射——我假设它需要一个 FK,但显然视图不能有 FK。
我需要做一个明确的加入吗?如果是这样,这意味着它们是没有关联的独立实体,所以我需要另一个存储库 - 而且我需要两个数据库调用,因为您不能跨两个存储库执行 JOIN。
理想情况下,我想这样做:
return ctx.Orders.Include("OrderDetailsView").SingleOrDefault();
但如前所述,我不知道是否可以添加指向视图的导航属性。
有任何想法吗?