При использовании Linq-To-SQL или Entity Framework DataContext и сгенерированные объекты предоставляют интерфейсы IQueryable для отложенного выполнения.Это позволяет мне писать код, подобный этому:
public class RPO
{
DataContext dc;
public RPO(){ dc = new DataContext(); }
public IQueryable<Data> ReadData()
{
return dc.Data;
}
}
public class Svc
{
RPO repository;
public Svc() { repository = new RPO(): }
public IQueryable<Data> ReadActiveData()
{
return repository.ReadData().Where(d => d.IsActive.Equals(true));
}
public IQueryable<Data> ReadArchiveData()
{
return repository.ReadData().Where(d => d.IsArchived.Equals(true));
}
}
Эта модель падает, если в классе Svc
я возвращаю DataModel
вместо Data
- как я могу держать IQueryable<T>
как можно ниже?цепь как можно?