从实体框架映射到自定义域模型类?
Posted
技术标签:
【中文标题】从实体框架映射到自定义域模型类?【英文标题】:Mapping from Entity Framework to custom domain model classes? 【发布时间】:2009-12-08 21:01:54 【问题描述】:我想知道如何获得实体框架 (.NET Framework 3.5 SP1) 生成的实体和自定义域模型类之间的自动映射?我知道我可以创建一些数据转换器来在两个世界之间来回转换对象,但我怎样才能以自动方式完成呢?
我开始开发我的领域模型类,用来自Validation application block 的验证属性装饰它们,这些验证属性不能在实体框架自动生成(和刷新)的实体类中使用。因此需要在 EF 和域模型之间自动(或至少使用最少的书面代码)映射.. 有什么想法吗?
【问题讨论】:
您能否在 EFv4 中完成此任务?我会撒谎做同样的事情,我想知道你是怎么做到的......如果你让它工作。 【参考方案1】:在 EF 1.0 中,Automapper 是一个不错的选择:http://www.codeplex.com/AutoMapper
【讨论】:
【参考方案2】:现在可以使用 EF 4,您应该查看有关 EF 的 Julie Lermann 博客。她最近发表了一系列关于 POCO 场景和 EF4 存储库的文章:
http://thedatafarm.com/blog/
使用 EF 3.5 这很难,但如果您的类具有相同的属性集,您仍然可以使用 Automapper...
http://automapper.codeplex.com/
【讨论】:
我猜 EF 4 只带有 .net 4? 是的,确实如此。所以我想你将不得不坚持使用 Automapper ......但是,如果你在使用 Automapper 分离图层方面做得很好,你可以很容易地跳转到 EF4 时升级到 .NET 4,因为您已经将 POCO 对象插入其中,并且可能还有一些验证规则(可能使用动态数据?) automapper 是否执行双向映射?也就是从领域模型到实体再回来? 你不会想要使用 AutoMapper 来做实体->展示,因为它不做 LINQ 投影。不过,对于绑定的编辑模型->实体来说,它可以正常工作。以上是关于从实体框架映射到自定义域模型类?的主要内容,如果未能解决你的问题,请参考以下文章
使用 RestKit 将 NSManagedObject 实体映射到自定义类