2016-07-12 5 views
0

В одном из моих объектов мне нужно специальное сопоставление, которое преобразует строку с разделителями (из базы данных) в словарь. Вместо того, чтобы использовать фиктивный свойство я думал, что более элегантный способ будет обычай картографа, как описано hereNPOCO: Почему мой пользовательский Mapper не называется

Моя проблема заключается в том, что ни один метод из устройства не всегда вызывается и NPOCO пытается преобразовать мой DB-строку в словарь, который очевидно, не удается.

Возможно, я неправильно понял картографа или что-то не хватает. Но не могу объяснить, почему это не работает.

My Mapping (упрощенный)

public class MyEntityMap : Map<MyEntity> 
{ 
    public MyEntity() 
    { 
     Columns(x => 
      { 
       x.Column(c => c.SpecialColumn).WithName("SpecialColumn"); 
      }, true); 
    } 
} 

Мои Mapper (не делать)

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

Итак, я просто обновился до NPoco v3, и он стал более плавным, чем предполагалось (просто пришлось изменить некоторые небольшие части кода на совпадающие изменения)

см. https://github.com/schotime/NPoco/wiki/Version-3 для взлома изменений.

Во всяком случае: с v3 вызывается мой картограф. Возможно, это была ошибка в v2?

Если у вас есть такая же проблема с v2, подумайте об обновлении до версии 3 (там ломают изменения, которые могут или не могут повлиять на вас)

настоящее время я использую v3.4.1

Смежные вопросы