【发布时间】:2010-12-14 18:14:43
【问题描述】:
我正在尝试使用 AutoMapper 从 DTO 映射到我的域。
我的 DTO 可能如下所示:
public class MyDTO
{
public string Name { get; set; }
public bool OtherProperty { get; set; }
public ChildDTO[] Children { get; set;}
}
public class ChildDTO
{
public string OtherName { get; set; }
}
My Domain 对象如下:
public class MyDomain
{
public string Name { get; set; }
public bool OtherProperty { get; set; }
public ISet<ChildDomain> Children { get; set; }
}
public class ChildDomain
{
public string OtherName { get; set; }
}
我将如何设置 AutoMapper 以便能够从这些 Array 映射到 Set。似乎 AutoMapper 正在获取数组并将它们转换为 IList,然后在转换为 ISet 时失败。
这是个例外
Unable to cast object of type 'System.Collections.Generic.List`1[DataTranser.ChildDTO]' to type 'Iesi.Collections.Generic.ISet`1[Domain.ChildDomain]'.
我希望找到一种简单的通用方法来执行此操作,以便最大限度地减少从 DTO 映射到域所需的基础架构。非常感谢任何帮助。
更新:
那么我将如何建模 MyDomain -> ChildDomain 而不会以贫血的域模型结束?我知道如果没有 MyDomain 或 ChildDomain 中的业务逻辑,域模型目前是贫乏的,但我们的目标是在我们前进的过程中添加业务逻辑。我只是想确保我的 View Model 可以翻译成领域模型并持久化。
您对这个场景有什么建议,从视图和域之间的简单映射转移到后来添加业务规则?
再次感谢您的帮助。
【问题讨论】:
-
您的自动映射器配置是...?
-
映射仅针对单个项目定义: Mapper.CreateMap
(); Mapper.CreateMap ();不确定我将如何为 Set 创建映射,这是问题的基本前提。感谢您的帮助。 -
我确实尝试过 Mapper.CreateMap
() 并以异常结束 -
标题怎么了?并没有真正反映问题,是吗?
标签: nhibernate mapping automapper