域对象和存储库

时间:2010-11-13 08:18:22

标签: domain-driven-design

我只用2天了解DDD,以及代码中的以下问题?

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

  }
}

1 个答案:

答案 0 :(得分:1)

这里没有明确的问题,我只能观察我能看到的内容:

为什么在域模型类(User)中有一个名为GetUserById的方法?这不应该在这里 - 这应该在你的存储库中(它是)。这就像是通过您的域模型调用您的存储库 - 这是错误。您的存储库是您的域模型的抽象。删除此方法。

您的演示文稿应该实例化您的存储库,它们对域模型执行操作,然后返回到演示文稿。

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

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