使用 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.
我想创建一个约定来将名为 "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.