Създайте конвенция за идентификатори, използвайки 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