Создание свойства, которое может переводить LINQ to Entities

Мне любопытно, как создать свойство, которое может быть переведено с помощью 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 часто необходимо воссоздавать

6
задан Aximili 10 May 2012 в 01:43
поделиться