Создать соглашение для идентификаторов, используя 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). Также см.: документация.

Другие вопросы по тегам