Я использую Entity Framework v4 и шаблон репозитория, найденный в ответе на этот вопрос SO:
Преимущество создания общего хранилища по сравнению с конкретным хранилищем для каждого объекта?
А именно, каждый репозиторий наследует от абстрактного базового класса, который содержит универсальные методы, такие как add, delete и т. Д., А также реализует специальный интерфейс репозитория для любых методов, уникальных для этого репозитория / сущности.
т.
public class CompanyRepository : Repository<Company>, ICompanyRepository {
public Company Get(int id)
{
return base.ObjectSet.SingleOrDefault(x => x.Id == id);
}
}
Как я могу выполнить более сложные запросы, которые ссылаются на сущности, которые не являются частью этого хранилища ... (скажем, через отношение многие ко многим с другой таблицей)?
public List<Company> GetAllCompaniesForUser(int userId)
{
return base.ObjectSet.Where(x => x.Users ?????
}