Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF использования свойств с аннатацией NoMapping / 5 сообщений из 5, страница 1 из 1
24.05.2017, 15:10
    #39458934
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF использования свойств с аннатацией NoMapping
Здравствуйте!

Скажите пожалуйста, почему я не могу использовать переменную IsDict в условиях до инициализации ToList()?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public class Product
{
    public int Id { get; set; }
	
	public int? DictId { get; set; }
    public Dict Dict { get; set; }              

    [NotMapped]
    public bool IsDict
    {
        get { return  Dict != null; }
    }
}

public class ProductMap : EntityTypeConfiguration<Product>
{
    public ProductMap()
    {
        ToTable("Product", "dbo");
        HasKey(a => a.Id);
        Property(a => a.Id).HasColumnName("Id");
        Property(a => a.DictId).HasColumnName("DictId");
    }
}

// Так работает
var q1 = dbcontext.set<Product>().ToList().Where(w => w.IsDict).ToList();

// Так выдает ошибку
var q2 = dbcontext.set<Product>().Where(w => w.IsDict).ToList();
//Error: The specified type member 'IsDict' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
...
Рейтинг: 0 / 0
24.05.2017, 15:45
    #39458981
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF использования свойств с аннатацией NoMapping
Nechto,
А если добавить
Код: c#
1.
 Ignore(a => a.IsDict);
...
Рейтинг: 0 / 0
24.05.2017, 15:51
    #39458983
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF использования свойств с аннатацией NoMapping
big-dukeNechto,
А если добавить
Код: c#
1.
 Ignore(a => a.IsDict);



Пробовал! Все равно ошибку выдает. :(
...
Рейтинг: 0 / 0
24.05.2017, 16:38
    #39459027
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF использования свойств с аннатацией NoMapping
Так в сообщении же ясно написано почему.

EF не может преобразовать свойство IsDict в выражение для SQL-запроса по понятным причинам (ибо это твоя логика, написанная на шарпе).

ToList выполняет материализацию запроса, после которой это уже не IQueryable, а просто IEnumerable и работает обычный Linq.
...
Рейтинг: 0 / 0
25.05.2017, 14:06
    #39459656
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF использования свойств с аннатацией NoMapping
Shocker.ProТак в сообщении же ясно написано почему.

EF не может преобразовать свойство IsDict в выражение для SQL-запроса по понятным причинам (ибо это твоя логика, написанная на шарпе).

ToList выполняет материализацию запроса, после которой это уже не IQueryable, а просто IEnumerable и работает обычный Linq.

Спасибо! Что помогли разобраться. Теперь я имею более четкое представление логики отправки запроса ef.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF использования свойств с аннатацией NoMapping / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]