EDMX использует ICollection для 1: п отношение корабль, как этотEDMX ICollection против DBSet
public partial class Customer
{
...
public virtual ICollection<User> Users { get; set; }
ICollection реализует IEnumerable и не IQueryable поэтому используя свойство навигации на клиента для фильтрации сайтов, получить все записи с сервера БД и фильтровать их на стороне клиента (это пример не реальный случай):
var users = myContext.Customer.Users.Where(u.Enabled).FirstOrDefault();
Linq запрос:
SELECT [Extent1].[IdCustomer] AS [IdCustomer],
[Extent1].[Enabled] AS [Enabled],
...
FROM [Framework].[User] AS [Extent1]
меня пытаются «заставить» EF установить пользователей в качестве Queryable во время выполнения, но это не работает:
var users = myContext.Customer.Users.AsQueryable().Where(u.Enabled).FirstOrDefault();
Два вопроса об этой проблеме:
- Почему AsQueryable не работает в Это дело ?
- Почему EDMX использует ICollection, а не DbSet?
- Возможно ли использовать DbSet или специализированную коллекцию с реализацией IQueryable?
Извините, но я не понимаю ваш ответ ... В моем примере запрос, сгенерированный linq, не содержит предложение where. – Jerome