Глядя на ваш вопрос, вы пытаетесь написать свой собственный defalut преобразователь классов, полученный из существующего. Я никогда не использовал этот подход;поэтому я не знаю, почему он не работает или должен работать.
Я явно отображаю классы, как показано ниже:
public class Customer
{
public int CustomerID { get; set; }
public string Name { get; set; }
}
public sealed class CustomerMapper : ClassMapper<Customer>
{
public CustomerMapper()
{
Schema("dbo");
Table("Customer");
Map(x => x.CustomerID).Key(KeyType.Identity);
AutoMap();
}
}
AutoMap()
отобразит остальные свойства на основена конвенций . Пожалуйста, обратитесь к этим двум ресурсам для получения дополнительной информации о сопоставлении.
Затем я вызываю SetMappingAssemblies
при запуске проекта, как показано ниже:
DapperExtensions.DapperExtensions.SetMappingAssemblies(new[] { Assembly.GetExecutingAssembly() });
GetExecutingAssembly()
используется в приведенном выше коде, потому что классы отображения (CustomerMapper
и другие) находятся в той же сборке, которая выполняется. Если эти классы помещены в другую сборку, предоставьте эту сборку вместо этого.
И все, все работает.
Чтобы установить диалект, я вызываю следующую строку чуть нижеSetMappingAssemblies
:
DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqlServerDialect();
Используйте предпочитаемый вами диалект вместо SqlServerDialect
.
Очевидно, упомянутое решение здесь может помочь вам достичь того, что вы на самом делепытаясьНо я не могу быть уверен, как я уже говорил выше, я никогда не использовал его.