MyCompany.Domain
Code: Select all
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
}
Code: Select all
public class UserRepository : IRepository
{
// Repository interface implementations
}
Derzeit enthält meine Repository-Ebene einen Verweis auf die Domänenebene. Nach meinem Verständnis funktioniert das Einfügen eines UserRepository in die UserService-Klasse sehr gut mit Unit-Tests, da wir gefälschte Benutzer-Repositories übergeben können. Bei dieser Architektur sieht es also so aus, als müsste mein Webprojekt Verweise auf meine Domänen- und Repository-Ebene haben. Aber ist das gültig? Denn historisch gesehen hatte die Präsentationsschicht nur einen Bezug zur Business-Logik-Schicht.
Mobile version