2016-07-12 3 views
0

エンティティの1つに、区切り文字列(DBから)を辞書に変換する特別なマッピングが必要です。 代わりに、いくつかのダミープロパティを使用して、私はもっとエレガントな方法を説明するように、カスタムマッパだろうと思ったhereNPOCO:カスタムMapperが呼び出されないのはなぜですか

私の問題マッパーからの方法は、これまでと呼ばれていないとNPOCOが辞書に私のDB-文字列を変換しようとしていることです明らかに失敗する。

多分私はマッパを誤解したり、何かを逃しています。しかし、なぜそれがうまくいかないのか説明できません。

マイマッピング(簡体字)

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); 
    } 
} 

マイdatalayer(コンストラクタ)

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にアップデートできるかどうかを確認しています

答えて

0

OK、NPoco v3にアップグレードしたところ、疑わしいよりスムーズになりました一致する変更がありません)

https://github.com/schotime/NPoco/wiki/Version-3を参照してください。

とにかく:v3で私のマッパーが呼び出されます。v2のバグだったのでしょうか?あなたがV2と同じ問題がV3にアップグレードを検討している場合、私は現在、v3.4.1

を使用してい

(またはあなたが影響を与えない可能性があり、変更が破壊されています)

関連する問題