小编Tag*_*Tag的帖子

在DDD方法中,此示例是否正确建模?

刚刚在SO上创建了一个acc来问这个:)

假设这个简化示例:构建Web应用程序来管理项目......
应用程序具有以下要求/规则.

1)用户应该能够创建插入项目名称的项目.
2)项目名称不能为空.
3)两个项目不能具有相同的名称.

我使用的是4层架构(用户界面,应用程序,域,基础架构).
在我的应用层上,我有以下ProjectService.cs类:

public class ProjectService
{
    private IProjectRepository ProjectRepo { get; set; }

    public ProjectService(IProjectRepository projectRepo)
    {
        ProjectRepo = projectRepo;
    }

    public void CreateNewProject(string name)
    {
        IList<Project> projects = ProjectRepo.GetProjectsByName(name);
        if (projects.Count > 0) throw new Exception("Project name already exists.");

        Project project = new Project(name);
        ProjectRepo.InsertProject(project);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的域层,我有Project.cs类和IProjectRepository.cs接口:

public class Project
{
    public int ProjectID { get; private set; }
    public string Name { get; private set; }

    public Project(string name)
    {
        ValidateName(name); …
Run Code Online (Sandbox Code Playgroud)

c# domain-driven-design repository repository-pattern

10
推荐指数
1
解决办法
1006
查看次数