我有点问题。我不太清楚如何处理这种情况,所以我只解释一个简化的场景,希望你能帮助我。
我正在尝试将父数据库对象映射到父 bll 对象。在这个父数据库对象中,有一个指向子 ID 的外键,在我的父 bll 对象中,我使用子 bll 对象(不仅仅包含一个 ID)。
所以这是我的 bll 对象:
public class Parent
{
public int ID { get; set; }
public Child Child { get; set; }
}
public class Child
{
public int ID { get; set; }
public string FirstName { get; set; }
}
这是我的映射器类/方法:
public class ParentMapper
{
public Parent MapFromSource(ParentDatabaseObject parentDO)
{
Parent parent = new Parent();
parent.ID = parentDO.ID;
parent.Child = ???;
return parent;
}
}
在这种情况下,我认为 ParentDatabaseObject 的外观并不重要,我只想知道应该如何映射 parent.Child 对象。
我考虑了以下几点:
parent.Child = new Child();
parent.Child.ID = doParent.Child.Id;
parent.Child.FirstName = doParent.Child.FirstName;
这感觉不对,因为我有点想把它放在我的 ChildMapper 中,这导致我采用第二种实现方式(假设我有一个单独的子映射器并有一个名为 childMapper 的实例):
parent.Child = childMapper.MapFromSource(parentDO.Child);
但我有种感觉,使用这种映射方式会使我的代码有点紧密耦合,因为我会在 ParentMapper 中使用 ChildMapper。
所以我想我的问题是:我应该如何实现这种映射。最后一种方法是正确的还是有更好的方法?我已经放弃了我尝试的第一件事。
谢谢你的帮助!
(我在发布这个问题之前做了研究,这是我能找到的最接近的: Data Mapper for Child Objects,但我对那里的唯一答案并不满意)