MyCompany.Domain
Код: Выделить всё
public class User
{
//Contains all the properties for the user entity
}
public interface IRepository where T : class
{
IQueryable GetQuery();
IQueryable GetAll();
IQueryable Find(Func condition);
T Single(Func condition);
T First(Func condition);
T GetByID(int id);
void Delete(T entity);
void Add(T entity);
void Attach(T entity);
void SaveChanges();
}
public interface IUserRepository: IRepository {}
public class UserService
{
private IUserRepository _userRepository;
public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
}
// This class will hold all the methods related to the User entity
}
Код: Выделить всё
public class UserRepository : IRepository
{
// Repository interface implementations
}
В настоящее время уровень моих репозиториев содержит ссылку на уровень домена. Насколько я понимаю, внедрение UserRepository в класс UserService очень хорошо работает при модульном тестировании, поскольку мы можем передавать поддельные пользовательские репозитории. Итак, с этой архитектурой похоже, что мой веб-проект должен иметь ссылки как на слои домена, так и на слои репозиториев. Но действительно ли это? Потому что исторически уровень представления имел ссылку только на уровень бизнес-логики.
Подробнее здесь: https://stackoverflow.com/questions/400 ... c2-project