Domain driven design 域对象和存储库

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? /

我学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?

      // 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
的方法?这不应该在这里-这应该在您的存储库中(它就是)。这就像通过域模型调用存储库一样,这是错误的。存储库是域模型的抽象。删除此方法

您的演示文稿应该实例化您的存储库,这些存储库在域模型上执行操作,然后返回到演示文稿

您的域模型不应依赖于任何内容

如果您有任何其他具体问题,请编辑您的问题,我将尝试回答