经过深思熟虑,我决定使用 Linq To SQL 作为我的项目的 DAL,但将业务对象保留为 POCO 对象。
这将提供一些灵活性,因为数据库模式很旧并且有一些无法解决的问题,因为向后兼容。
我正在考虑制作一些方法来使用反射将 LINQ 对象检索或完成到 POCO 对象中。此方法必须尝试使用相同名称填充所有属性。
问题:
你知道做映射的更好方法吗?
澄清:
1.我不想使用NHibernate,实体等
。2.我知道反射很慢
经过深思熟虑,我决定使用 Linq To SQL 作为我的项目的 DAL,但将业务对象保留为 POCO 对象。
这将提供一些灵活性,因为数据库模式很旧并且有一些无法解决的问题,因为向后兼容。
我正在考虑制作一些方法来使用反射将 LINQ 对象检索或完成到 POCO 对象中。此方法必须尝试使用相同名称填充所有属性。
问题:
你知道做映射的更好方法吗?
澄清:
1.我不想使用NHibernate,实体等
。2.我知道反射很慢
您可能想研究一下 Jimmy Bogard 的AutoMapper之类的东西,它几乎可以满足您的要求。如果您想看一下,他已将其加载到CodePlex和GoogleCode上。
创建一个静态类“复印机”。该类的静态构造函数可以反映在 T 和 U 上,并使用 DynamicMethod 发出代码(循环遍历每个属性,查看哪些排列)。这样反射价格就支付一次。从那里开始,它将是一个普通的委托调用,应该很快。
您可能会遇到的问题是,当事情不完全匹配时,简单地复制同名字段会变得有些限制。您可能会考虑使用反射并生成为您进行转换的代码,然后手动修复它们。