Domain driven design 域对象和存储库
我学DDD才2天,下面的问题有代码吗Domain driven design 域对象和存储库,domain-driven-design,Domain Driven Design,我学DDD才2天,下面的问题有代码吗 public class User { public Int UserId{get;set;} public string Username{get;set;} public List<Role> Roles{get;set;} public User GetUserById(int userid) { // How to write the business logic? /
public class User
{
public Int UserId{get;set;}
public string Username{get;set;}
public List<Role> Roles{get;set;}
public User GetUserById(int userid)
{
// How to write the business logic?
// How to instance userRepository?
return userRepository.GetUserById(userid);
}
public List<Role> GetRoles(int userid)
{
// How to write ?
}
}
public interface IUserRepository
{
User GetUserById(int userid);
}
public class UserRepository : IUserRepository
{
public User GetUserById(int userid)
{
///ado.net code list from database
}
}
公共类用户
{
public Int UserId{get;set;}
公共字符串用户名{get;set;}
公共列表角色{get;set;}
公共用户GetUserById(int userid)
{
//如何编写业务逻辑?
//如何创建userRepository实例?
返回userRepository.GetUserById(userid);
}
公共列表GetRoles(int userid)
{
//如何写作?
}
}
公共接口存储库
{
用户GetUserById(int userid);
}
公共类UserRepository:IUserRepository
{
公共用户GetUserById(int userid)
{
///数据库中的ado.net代码列表
}
}
这里没有明确的问题,我只能观察我所看到的:
为什么在域模型类(User)中有一个名为GetUserById
的方法?这不应该在这里-这应该在您的存储库中(它就是)。这就像通过域模型调用存储库一样,这是错误的。存储库是域模型的抽象。删除此方法
您的演示文稿应该实例化您的存储库,这些存储库在域模型上执行操作,然后返回到演示文稿
您的域模型不应依赖于任何内容
如果您有任何其他具体问题,请编辑您的问题,我将尝试回答