Я немного боролся с этой крошечной проблемой - и я вполне уверен, что есть «простое» решение.
У меня есть базовый класс базового репозитория nHibernate с помощью следующего метода:
public IList<T> GetAll()
{
using (var session = SessionProvider.OpenSession())
{
return session.Query<T>().ToList();
}
}
Однако - я пытаюсь управлять своей моделью, используя несколько очень простых интерфейсов. У меня есть интерфейс - ISetDeleted:
public interface ISetDeleted
{
bool Deleted { get; set; }
}
В моем методе GetAll (), я хотел бы проверить его, текущий тип реализует этот интерфейс - и, если это так, возвращает только те объекты, которые не помечены как удаленные:
public IList<T> GetAll()
{
using (var session = SessionProvider.OpenSession())
{
if (typeof(T) is ISetDeleted)
{
// Only retrieve entities that are not marked as deleted
// WHAT DO I DO HERE?
}
return session.Query<T>().ToList();
}
}
Я знаю, что мог бы просто извлечь все сущности и просмотреть их, но я бы предпочел более чистый подход, например, выражение, которое реализует проверку (если возможно).
Было бы очень признательно, если бы кто-нибудь помог мне с этим:)