В одном из моих объектов мне нужно специальное сопоставление, которое преобразует строку с разделителями (из базы данных) в словарь. Вместо того, чтобы использовать фиктивный свойство я думал, что более элегантный способ будет обычай картографа, как описано 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