【发布时间】:2011-04-29 18:14:07
【问题描述】:
我正在尝试使用 Entity Framework 4 为我的新 ASP.NET MVC2 项目使用域驱动开发 (DDD)。在做一些研究后,我想出了以下层约定,每个层在其自己的类项目中:
MyCompany.Domain
public class User
{
//Contains all the properties for the user entity
}
public interface IRepository<T> where T : class
{
IQueryable<T> GetQuery();
IQueryable<T> GetAll();
IQueryable<T> Find(Func<T, bool> condition);
T Single(Func<T, bool> condition);
T First(Func<T, bool> condition);
T GetByID(int id);
void Delete(T entity);
void Add(T entity);
void Attach(T entity);
void SaveChanges();
}
public interface IUserRepository: IRepository<User> {}
public class UserService
{
private IUserRepository _userRepository;
public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
}
// This class will hold all the methods related to the User entity
}
MyCompany.Repositories
public class UserRepository : IRepository<User>
{
// Repository interface implementations
}
MyCompany.Web --> 这是 MVC2 项目
目前我的 Repositories 层包含对 Domain 层的引用。据我了解,将 UserRepository 注入 UserService 类非常适合单元测试,因为我们可以传入假用户存储库。因此,使用这种架构,我的 Web 项目看起来需要对我的 Domain 和 Repositories 层都有引用。但这是有效的吗?因为从历史上看,表示层只引用了业务逻辑层。
【问题讨论】:
-
其实DDD就是领域驱动设计
标签: c# asp.net asp.net-mvc-2 domain-driven-design entity-framework-4