2013-07-13 127 views
0

我有兩個對象(WS.Customer和EF.Customer)。原因是我的供應商沒有公開他們的對象(WS.Customer)中的所有字段,我需要插入並更新到這些字段中。合併不同類型的對象

我需要合併WS.Customer - > EF.Customer,稍後合併EF.Customer - > WS.Customer。 EF.Customer將有一些WS.Customer不具備的額外字段,但當字段名稱匹配時 - 我希望合併值。

我也只想合併目標字段爲空,空值或Guid情況下的默認值的值。

我知道我可以用Linq來查詢每個對象並構建另一個對象,但是有沒有一種較爲冗長的做事方式?我還有其他一些物品需要使用這種方法,而且不想花費幾周打字。

謝謝

+0

你的意思是,如果ws.customer有場名稱,身份證,戶口等..-和ef.customer沒有例如ID和賬戶,你想插入它們? – terrybozzio

+0

我不知道這是你在找什麼,但看看ExpandoObject類http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.100).aspx – terrybozzio

回答

2

您可以使用可用的對象到對象映射器庫像AutoMapperEmitMapper之一。他們將負責在兩個方向上覆制數據,並在正確配置的情況下跳過字段。例如與EmitMapper你的代碼可能是這樣的:

ObjectMapperManager.DefaultInstance 
        .GetMapper<WS.Customer, EF.Customer>(<your configuration object here>) 
        .Map(customerSource, customerDestination); 
+1

AutoMapper的替代方法是[ValueInjecter](http://valueinjecter.codeplex.com)。這裏有一個關於[AutoMapper vs ValueInjecter]的好問題(http://stackoverflow.com/q/4663577/9664)。 –

+0

@MetroSmurf好點,謝謝 –