Создать соглашение для идентификаторов, используя dapper
Я хотел бы создать соглашение, чтобы установить столбец с именем "Id" в качестве первичного ключа, я смотрел на документацию и до сих пор я решил сделать это вручную класс за классом, как: с Dommel:
public class ProductMap : DommelEntityMap<TEntity>
{
public ProductMap()
{
Map(p => p.Id).IsKey();
}
}
Я хотел бы что-то более похожее на:
public ConventionMap()
{
Properties<int>().Where(p=>p.Name.ToLower()=="id").isKey();
}
это может быть расширение dommel или dapper или любое другое, я просто хочу, чтобы эта реализация была беглой.
любой совет? Спасибо!
1 ответ
Решение
Dommel позволяет создавать собственные IKeyPropertyResolver
,
Ваша реализация будет выглядеть так:
public class CustomKeyPropertyResolver : DommelMapper.IKeyPropertyResolver
{
public PropertyInfo ResolveKeyProperty(Type type)
{
return type.GetProperties().Single(p => p.Name.ToLower() == "id");
}
}
Который должен быть зарегистрирован при запуске приложения с использованием этой строки кода:
DommelMapper.SetKeyPropertyResolver(new CustomKeyPropertyResolver());
Для этого вам не нужен Dapper.FluentMap (или Dapper.FluentMap.Dommel). Также см.: документация.