Создайте соглашение для идентификаторов, используя dapper

Я хотел бы создать соглашение, чтобы установить столбец с именем «Id» в качестве первичного ключа, я просматривал документацию, и до сих пор я не мог сделать это вручную класс за классом, например: с доммель:

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 или любые другие, я просто использую эту реализацию, чтобы свободно говорить.

любой совет? Спасибо!


person pedrommuller    schedule 12.01.2015    source источник
comment
Для чего вам это нужно? Сам Dapper ничего не знает об именах столбцов, именах таблиц и первичных ключах. Вы используете DapperExtensions или Dommel?   -  person Henk Mollema    schedule 13.01.2015
comment
в любом случае я могу переходить от одного к другому, сейчас я пытаюсь использовать DapperExtensions.   -  person pedrommuller    schedule 13.01.2015


Ответы (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). См. также: документацию.

person Henk Mollema    schedule 14.01.2015