Мне любопытно, как создать свойство, которое может быть переведено с помощью LINQ. Ниже приведен очень простой пример.
У меня есть таблица/класс Category
, в которой есть столбец ParentId
, ссылающийся на себя (поэтому категория может иметь подкатегории)
EF автоматически генерирует свойство Category1
, которая является родительской категорией
Для ясности я создал другое свойство
public partial class Category
{
public Category Parent
{
get { return Category1; }
}
}
Проблема в том, что это работает
var categs = ctx.Categories.Where(x => x.Category1 == null);
но это не работает
var categs = ctx.Categories.Where(x => x.Parent == null);
Указанный тип член «Родительский» не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, члены сущностей и свойства навигации сущностей.
Есть ли способ создать переводимое свойство (LINQ to SQL), не выполняя .ToList()?
РЕДАКТИРОВАТЬ: я хочу не трогать Model.edmx, потому что база данных часто меняется во время разработки, а .edmx часто необходимо воссоздавать