我经常发现自己在域对象中编写了presistence层的实现细节。在我即将发布的示例中,能够将PersonRecord
传递给构造函数以映射属性似乎很有用。
注意:此示例中PersonRecord
是实体框架实体。
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Person(Data.persistence.PersonRecord entity)
{
Id = entity.Id
Name = entity.Name
Email = entity.Email
}
}
我还发现在保存数据时将属性映射回实体非常有用。
public void UpdateEntity(Data.persistence.PersonRecord entity)
{
entity.Id = Id
entity.Name = Name
entity.Email = Email
}
然后我有一个执行保存的实体的存储库。
我对这种方法的担忧是我的域对象与实体框架相结合,因此很难替换其他SRP
违规问题。
我的顾虑是否合理?
我可以通过交换依赖关系来解决构造函数问题,将每个属性作为参数并在存储库中传入这些值。
我可以为更新实体做同样的事情,我不需要域模型中的任何额外逻辑,而是让存储库负责映射属性。
通过做这些事情,我还需要做以下事情:
DRY
原则,除非该逻辑被抽象为工厂函数等。我错过了一招吗?
如果没有,哪种方法最好?