#entity-framework-4 #linq-to-entities
#entity-framework-4 #linq-to-entities
Вопрос:
У меня есть инструкция sql, которую я хочу иметь возможность конвертировать в EF4.
Это простое внешнее соединение слева, которое выглядит как
SELECT *
FROM EntryDate
LEFT OUTER JOIN Member on Member.CardId = EntryDate.CardID
как мне это сделать, используя entity framework 4?
Ответ №1:
Если в вашей модели сопоставлено отношение, вы можете просто использовать свойства навигации, потому что они всегда используют соединение по левому краю:
var data = members.EntryDates;
Я ожидаю, что у вас нет такого отношения, потому что CardId
это не похоже на первичный ключ Member
или EntryDate
.
Если у вас нет свойств навигации, вы должны использовать
var query = from m in context.Members
join e in context.EntryDates on m.CardId equals e.CardId into x
from res in x.DefaultIfEmpty()
select new
{
Member = m,
EntryDate = res
};
Это работает только в EFv4 , потому что EFv1 не поддерживается DefaultIfEmpty
.
Комментарии:
1. Спасибо, Ладислав, да, у меня нет никаких свойств навигации, поэтому мне пришлось использовать 2-й вариант