Ho appena iniziato a giocare con DapperExtensions e sembra molto promettente. Tuttavia, sono confuso su come gestire la registrazione delle sottoclassi di ClassMapper.Come si registrano le sottoclassi di DapperExtension ClassMapper in modo che vengano utilizzate?
Ho sia un PluralizedAutoClassMapper personalizzato che un ClassMapper normale e sto provando ad usarli entrambi.
Ecco il mio mapper pluralizzato ...
public class CustomPluralizedMapper<T> : PluralizedAutoClassMapper<T>
where T : class
{
private readonly Type[] SinglularTablePocoTypes = new []{
typeof(LibraryInfo)
};
public override void Table(string tableName)
{
base.Table(tableName);
if(SinglularTablePocoTypes.Any(type => string.Equals(type.Name, tableName, StringComparison.CurrentCultureIgnoreCase)))
TableName = tableName;
}
}
... ed ecco il mapper appositamente per la classe LibraryInfo
public class LibraryInfoMapper : ClassMapper<LibraryInfo>
{
public LibraryInfoMapper()
{
Map(libraryInfo => libraryInfo.Name).Column("LibraryName");
Map(libraryInfo => libraryInfo.Description).Column("LibraryDescription");
AutoMap();
}
}
Il PluralizedAutoClassMapper ho potuto lavorare chiamando il seguente ...
DapperExtensions.DapperExtensions.DefaultMapper = typeof(CustomPluralizedMapper<>);
Ma non sono sicuro di come utilizzare l'altro allo stesso tempo. Cosa mi manca?
Il denunciante lamenta "I membri virtuali chiamano nel costruttore": D –
Intendi in LibraryInfoMapper? Non uso ReSharper, quindi non riesco a vedere a cosa ti stai riferendo. Tuttavia, questo funziona e devo ancora avere un singolo problema con esso. – MarqueIV