Если у меня есть следующее IQueryable<T>
Репозиторий:
public class OrderRepository : GenericRepository<Order>, IOrderRepository
{
public IQueryable<Order> Find()
{
return Context.CurrentEntitySet;
}
}
И я использую это, чтобы получить конкретный заказ:
var order = orderRepository.Find().SingleOrDefault(x => x.OrderId == 1);
Все хорошо.
Теперь у меня есть представление SQL Server 2008 с именем OrderDetailsView , которое я добавил в мой EDMX. В нем есть поле с именем OrderId , к которому я хочу присоединиться. Это 1-1 между Order и OrderDetailsView .
Я хочу вернуть определенный ордер и соответствующую запись OrderDetailsView.
Я не уверен, что правильный подход здесь.
Могу ли я иметь навигационное свойство для сущности View в моем Order? Я могу добавить ассоциацию - но дизайнер жалуется на то, что она не отображается - я предполагаю, что для этого требуется FK, но, очевидно, у View не может быть FK.
Нужно ли делать явное соединение? Если это так, это означает, что они являются независимыми объектами без какой-либо связи, поэтому мне потребуется другой репозиторий - и мне понадобятся два вызова базы данных, поскольку вы не можете выполнить JOIN через два репозитория.
В идеале я бы хотел сделать это:
return ctx.Orders.Include("OrderDetailsView").SingleOrDefault();
Но, как уже упоминалось, я не знаю, возможно ли добавить навигационное свойство, которое указывает на представление.
Есть идеи?