私のエンティティの 1 つで、区切り文字列 (DB から) をディクショナリに変換する特別なマッピングが必要です。ダミーのプロパティを使用する代わりに、こちらで説明されているように、よりエレガントな方法はカスタムマッパーになると思いました
私の問題は、マッパーからのメソッドが呼び出されず、NPOCO が私の db-string を辞書に変換しようとして失敗することです。
マッパーを誤解しているか、何かが欠けている可能性があります。しかし、なぜそれが機能しないのかを説明することはできません。
マイ マッピング (簡易版)
public class MyEntityMap : Map<MyEntity>
{
public MyEntity()
{
Columns(x =>
{
x.Column(c => c.SpecialColumn).WithName("SpecialColumn");
}, true);
}
}
マイ マッパー (あまり機能しません)
public class MyMapper : DefaultMapper
{
public override Func<object, object> GetFromDbConverter(MemberInfo destMemberInfo, Type sourceType)
{
return base.GetFromDbConverter(destMemberInfo, sourceType);
}
public override Func<object, object> GetFromDbConverter(Type destType, Type sourceType)
{
return base.GetFromDbConverter(destType, sourceType);
}
public override bool MapMemberToColumn(MemberInfo pi, ref string columnName, ref bool resultColumn)
{
return base.MapMemberToColumn(pi, ref columnName, ref resultColumn);
}
public override void GetTableInfo(Type t, TableInfo ti)
{
base.GetTableInfo(t, ti);
}
}
私のデータレイヤー(コンストラクター)
protected SimpleDepot()
{
//SQL Server / MySQL
if (!mappingInitialized)
{
NPocoDatabaseFactory.Setup("connectionstring");
mappingInitialized = true;
}
Database = NPocoDatabaseFactory.DbFactory.GetDatabase();
Database.Mapper = new MyMapper();
PocoData = Database.PocoDataFactory.ForType(typeof(TEntity));
}
したがって、少なくとも私にはすべてが順調に見えます。私が見逃しているアイデア。現在NPOCO 2.9.103を使用していますが、v3にアップデートできるか確認中です