public class ProjectType : Entity
{
public ProjectType(Guid id,string name)
{
Id=id;
Name=name;
}
public virtual string Id {get;private set;}
public virtual string Name {get;private set;}
}
public class Project : Entity
{
public Project(Guid id, ProjectType projectType)
{
Id = id;
ProjectType = projectType;
}
private IList<Task> _tasks = new List<Task>();
public ProjectType {get;private set;}
public IEnumerable<Task> Tasks
{
get{
return _tasks;
}
}
public void AddTask(Task task)
{
// some business logic for this.ProjectType
task.SetProject(this);
_tasks.Add(task);
}
public void RemoveTask(Task task)
{
_tasks.Remove(task);
}
}
public class Task : Entity
{
public Task(Guid taskId,Project project)
{
Id = taskId,
Project = project;
}
public Project Project {get;private set;}
public Task ParentTask {get;private set;}
private IList<Task> _subTasks = new List<Task>();
public IEnumerable<Task> SubTasks
{
get{
return _subTasks;
}
}
public void AddSubTask(Task task)
{
// some business logic for Project.ProjectType
task.SetProject(this.Project);
task.ParentTask = this;
_subTasks.Add(task);
}
public void RemoveSubTask(Task task)
{
_subTasks.Remove(task);
}
internal void SetProject(Project project)
{
Project = project;
}
}
Мои вопросы:ддд, совокупный дизайн корень
- Является ли проект совокупный корень?
- Является ли агрегированный корень задачи?
- Должен ли AddTask, RemoveTask быть частью проекта?
- Должен ли AddSubTask, RemoveSubTask быть частью задачи?
Я не понимаю эту строку: «Если есть только один пользователь (например, менеджер проектов), это нормально, но если многие пользователи (например, правопреемники) хотят изменить свою задачу, это может привести к частым параллельным сбоям, делает приложение непригодным ». – oguzh4n
@ oguzh4n Извините, мой плохой английский :(Смотрите мое обновление, и вы можете получить больше плюсов и минусов небольшого агрегата в статье Вернона (см. Ссылку) – Hippoom
спасибо за обновление, задача может редактировать со многими пользователями одновременно, поэтому я hink использовать оптимистичный параллелизм, но вы говорите «параллелизм в проекте», как я могу решить эту проблему параллелизма? – oguzh4n