0

2 つのオブジェクト (WS.Customer と EF.Customer) があります。この理由は、ベンダーがオブジェクト (WS.Customer) のすべてのフィールドを公開していないためです。これらのフィールドに挿入して更新する必要があります。

WS.Customer -> EF.Customer をマージし、後で EF.Customer -> WS.Customer をマージする必要があります。EF.Customer には、WS.Customer にはない追加のフィールドがいくつかありますが、フィールド名が一致すると、値がマージされます。

また、宛先フィールドが null、空、または Guid の場合のデフォルト値である値のみをマージしたいと考えています。

Linq を使用して各オブジェクトにクエリを実行し、他のオブジェクトを構築できることはわかっていますが、より冗長な方法はありますか? このアプローチを使用する必要がある他のオブジェクトがいくつかありますが、入力するのに何週間も費やす気はありません。

ありがとう

4

2 に答える 2

2

AutoMapperEmitMapperなどの利用可能なオブジェクト間マッパー ライブラリのいずれかを使用できます。データを両方向にコピーし、適切に構成されていればフィールドをスキップします。たとえば、EmitMapper を使用すると、コードは次のようになります。

ObjectMapperManager.DefaultInstance
                   .GetMapper<WS.Customer, EF.Customer>(<your configuration object here>)
                   .Map(customerSource, customerDestination);
于 2013-07-13T20:52:39.297 に答える
1

「併合」とはどういう意味ですか?あるインスタンスから別のインスタンスに「変換」する必要があると思います。つまり、プロパティの名前とタイプが一致したときに値をコピーします。オブジェクトの拡張メソッドである ServiceStack で提供される実装をご覧ください - TranslateTo メソッド: https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/ReflectionExtensions.cs#L31

于 2013-07-13T20:51:21.963 に答える