使用 dapper 为 id 创建约定

Create a convention for ids using dapper

我想创建一个约定来将名为 "Id" 的列设置为主键,我一直在查看文档,到目前为止我只找到了这样做通过 class 手动 class 喜欢: 带手柄:

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 扩展或任何其他,我只是为了流畅地实现这个实现。

有什么建议吗? 谢谢!

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)。另见:the documentation.