Ниже представлен класс code-first Project, напрямую сопоставленный с базой данных через Entity Framework 6 Fluent API:
public class Project
{
public Project()
{}
public int ProjectId { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public ICollection<ProjectVersion> ProjectVersions { get; set; }
}
Анемичные модели в доменно-ориентированном проектировании — это антишаблон. Я хочу использовать этот же класс в моей модели домена вместо того, чтобы создавать отдельный класс домена Project
и выполнять сложное сопоставление между ними в репозитории (и с сотнями других моделей, которые у нас есть).
Вот как Project
будет выглядеть как класс модели предметной области:
public class Project
{
private readonly List<ProjectVersion> projectVersions;
public Project(string name, string description)
{
Name = name;
Description = description;
projectVersions = new List<ProjectVersion>();
}
public int ProjectId { get; private set; }
public string Name { get; set; }
public bool IsActive { get; private set; }
public IEnumerable<ProjectVersion> ProjectVersions
{
get
{
return projectVersions;
}
}
public void AddVersion(ProjectVersion version)
{
projectVersions.Add(version);
}
}
Из того, что я прочитал , я могу сопоставить частные поля с помощью Fluent API EF.
Есть ли здесь недостатки? Я иду по ненужному пути?
Единственная проблема, которую я могу предвидеть, — это когда модель бизнес-домена по существу будет состоять из данных из двух или более объектов данных.