Надеюсь, моя формулировка имеет смысл ... Я не совсем уверен, как именно объяснить, что я собираюсь сделать.
У меня есть метод в общем классе, который возвращает список объектов следующим образом:
public abstract class ChildCRUDController<TModel> : CRUDController<TModel, ... >
where TModel : IChildEntity
public ViewResult List(int id)
{
return View(repository.GetMany(x => x.ParentID == id));
}
Этот контроллер реализован довольно многими другими контроллерами. У меня проблема в том, что не все сущности, которые реализуют IChildEntity, имеют один и тот же родительский тип. Чтобы обойти эту проблему, я создал свойства ParentID для всех моделей, которые реализуют IChildEntity, чтобы они могли использовать один и тот же контроллер.
public partial class PhoneNumber : IChildEntity
{
public int ParentID
{
get { return CustomerID; }
set { CustomerID = ParentID; }
}
}
и ...
public partial class Transaction : IChildEntity
{
public int ParentID
{
get { return LeaseID; }
set { LeaseID= ParentID; }
}
}
Но когда я вызываю метод List выше, я получаю следующую ошибку:
Указанный элемент типа 'ParentID' не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей.
Можно ли каким-то образом добиться результата, которого я ищу, без вытягивания набора объектов в память или переименования всех свойств самих сущностей?
Спасибо!