次のことができるフレームワークはありますか?
var source = new Entity()
{
StringProp = null,
IntProp = 100,
};
var target = new Entity()
{
StringProp = "stringValue", // Property value should remain the same if source value is null
IntProp = 222
};
var mergedEntity = MergeFramework.Merge(source, target); // Here is what I am looking for
Assert.AreEqual(100, mergedEntity.IntField);
Assert.AreEqual("stringValue", mergedEntity.StringField);
以下は、必要なワークフローです。
アプリはエンティティ インスタンスを取得します。インスタンスの一部のプロパティが null です。(ソースインスタンス)
アプリは、ソースと同じ ID を持つエンティティをデータベースからフェッチします。(対象インスタンス)
2 つのエンティティをマージし、データベースにマージして保存します。
主な問題は、プロジェクトに 600 近くのエンティティがあるため、各エンティティのマージ ロジックを手動で記述したくないことです。基本的に、次の要件を満たす AutoMapper や ValueInjecter のような柔軟なものを探しています。
タイプのマージ条件を指定する可能性を提供します。例: source.IntProp == int.MinInt -> プロパティをマージしない場合
プロパティ固有の条件を指定する可能性を提供します。AutoMapper のように:
Mapper.CreateMap().ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.EventDate.Date));