我有两个表“Product”和“Product_Recovery”。它们具有相同的结构。Cast Entity Framework对象到另一个实体框架对象
所以,我想铸造产品实体对象专用Product_Recovery对象,反之亦然,但我得到一个错误:
cannot convert from 'MyProject.Objects.Product' to 'MyProject.Objects.Product_Recovery'
有没有简单的方法来做到这一点?
我有两个表“Product”和“Product_Recovery”。它们具有相同的结构。Cast Entity Framework对象到另一个实体框架对象
所以,我想铸造产品实体对象专用Product_Recovery对象,反之亦然,但我得到一个错误:
cannot convert from 'MyProject.Objects.Product' to 'MyProject.Objects.Product_Recovery'
有没有简单的方法来做到这一点?
不,你不能只将一个物体投射到另一个物体上,除非另一个物体来自另一个物体。 C#应该如何知道这些类是相同的?但是,您可以使用AutoMapper
库从Product
转换为Product_Recovery
,这可以通过使用反射来简化。
检查出Project Page或Getting 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);
如果您需要两种方式,请在末尾添加.ReverseMap()。 – PmanAce
这个作品不错!非常感谢。你拯救了我的一天。 –
的可能的复制[其接口签名相同的接口之间进行转换(http://stackoverflow.com/questions/ 9428247/cast-between-interfaces-which-interface-signature-are-same) – Aron
@Aron:是的,这是一个重复的问题,但是这个问题已经有4年的历史了,那么'AutoMapper'可能就不可用了。老实说,如果最佳做法是离开或关闭的情况下引用的问题的日期是 – caesay
@ caesay通常我会说你应该1)投票结束这个问题2)回答你的现代答案这个问题。然而,最重要的答案是Jon Skeet的答案,这使得事情变得复杂......我确信这是一个元素。 – Aron