下面是通过 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);
}
}
根据我的阅读,我可以使用 EF 的 Fluent API 映射到私有字段。
这里有什么缺点吗?我是在走不必要的捷径吗?
我能预见的唯一问题是,当业务域模型本质上由来自两个或多个数据实体的数据组成时。