У меня есть общий метод для запроса объектов типа TEntity в EF. Я хочу добавить условие как предложение where, если TEntity реализует определенный интерфейс. У меня есть метод:
public TEntity GetByUserID(Guid userID)
{
var query = this.DbSet;
if (typeof (TEntity).IsImplementationOf<IDeletableEntity>())
{
query = query
.Where((x => !((IDeletableEntity)x).IsDeleted);
}
return query
.FirstOrDefault(x => x.UserID == userID);
}
IsImplementationOf < > () - метод, который возвращает true/false, как следует из названия.
Когда я запускаю это для адреса объекта, который реализует IDeletableEntity, я получаю сообщение об ошибке:
Невозможно ввести тип "Адрес", чтобы ввести "IDeletableEntity". LINQ to Entities поддерживает только листинг EDM примитивных или перечисляемых типов.
Любые идеи, как я могу обойти это ограничение LINQ?