2016-06-10 83 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

這個作品不錯!非常感謝。你拯救了我的一天。 –