2016-06-10 82 views
-1

我有两个表“Product”和“Product_Recovery”。它们具有相同的结构。Cast Entity Framework对象到另一个实体框架对象

所以,我想铸造产品实体对象专用Product_Recovery对象,反之亦然,但我得到一个错误:

cannot convert from 'MyProject.Objects.Product' to 'MyProject.Objects.Product_Recovery'

有没有简单的方法来做到这一点?

+0

的可能的复制[其接口签名相同的接口之间进行转换(http://stackoverflow.com/questions/ 9428247/cast-between-interfaces-which-interface-signature-are-same) – Aron

+0

@Aron:是的,这是一个重复的问题,但是这个问题已经有4年的历史了,那么'AutoMapper'可能就不可用了。老实说,如果最佳做法是离开或关闭的情况下引用的问题的日期是 – caesay

+0

@ caesay通常我会说你应该1)投票结束这个问题2)回答你的现代答案这个问题。然而,最重要的答案是Jon Skeet的答案,这使得事情变得复杂......我确信这是一个元素。 – Aron

回答

3

不,你不能只将一个物体投射到另一个物体上,除非另一个物体来自另一个物体。 C#应该如何知道这些类是相同的?但是,您可以使用AutoMapper库从Product转换为Product_Recovery,这可以通过使用反射来简化。

检查出Project PageGetting Started,并在您准备使用时从Nuget安装。

如何用最简单的例子是(从入门复制):

// execute this somewhere in your program construction 
// only once to generate the required mappings 
Mapper.Initialize(cfg => cfg.CreateMap<Product, Product_Recovery>()); 

// execute this to transform from one to another: 
Product dto = Mapper.Map<Product_Recovery>(productInstance); 
+0

如果您需要两种方式,请在末尾添加.ReverseMap()。 – PmanAce

+0

这个作品不错!非常感谢。你拯救了我的一天。 –