В моей БД есть таблицы с атрибутом int DeleteState
. Я хочу общий метод для запроса этих таблиц. Другими словами, метод, который делает это: Context.Table.Where(x => x.DeleteState == 0)
.
Я думал, что смогу сделать это:
public static class Extensions
{
public static IQueryable<T> Exists<T>(this IQueryable<T> qry) where T : IDeletable
{
return qry.Where(x => x.DeleteState == 0);
}
}
Где IDeletable
это:
public interface IDeletable
{
int DeleteState { get; set; }
}
Теперь мне нужно только добавить IDeletable
в модель EF:
public partial class Table : EntityObject, IDeletable { ... }
Я сделал это с помощью механизма шаблонов.
К сожалению, это не работает :( Прекрасно компилируется, но выдает во время выполнения:
Unable to cast the type 'Table' to type 'IDeletable'. LINQ to Entities only supports casting Entity Data Model primitive types
если я назову это так:
Context.Table.Exists();
Как я могу решить эту проблему? Не могли бы вы придумать исправление или другой метод для достижения аналогичных результатов? Thx