我正在尝试Dapper.我喜欢到目前为止所看到的.为了做简单的CRUD,我使用Dapper.rainbow.它工作得很好.但是,仅当表具有名称为Id的标识列时,它才有效.有这样的db是有意义的,但我不能要求在数据库中更改列名只是为了使用D...

我正在尝试Dapper.我喜欢到目前为止所看到的.为了做简单的CRUD,我使用Dapper.rainbow.它工作得很好.但是,仅当表具有名称为Id的标识列时,它才有效.有这样的db是有意义的,但我不能要求在数据库中更改列名只是为了使用Dapper.为了更清楚,我正在使用像Northwind Db这样的数据库.它在Id列中重复了表名.
为了处理这个问题,我更改了Dapper.Rainbow代码如下:
public T Get(TId id,string idColumnName="Id")
{
return database.Query<T>("select * from " + TableName + " where "+idColumnName+" = @id", new { id }).FirstOrDefault();
}
有没有更好的方法来处理这个如列映射/注释或完全不同的东西?
我读过这样的问题
Manually Map column names with class properties
Dapper.Rainbow VS Dapper.Contrib
(我遇到了与Dapper.Contrib类似的小问题,我会另外问一下).
更新 – 不确定答案是否适用于我的Dapper.Rainbow问题(至少,我不知道如何).
提前感谢您的帮助!
解决方法:
我遇到了类似的问题.现有的Dapper扩展不符合我的理想模式.我希望简单的CRUD操作具有智能默认值而无需额外的任何操作.我还想让模型具有未直接映射到数据库的其他属性.例如 – 在其getter中组合FirstName和LastName的FullName属性 – 而不是将FullName添加到Insert和Update语句中.
在大多数情况下,我希望主键列为Id,但允许覆盖属性.
最后,我希望表名默认匹配类名,但允许覆盖属性.
我最终写了自己的扩展到Dapper,解决了这些问题.它在Github和Nuget上.希望它对你有所帮助.
https://github.com/ericdc1/Dapper.SimpleCRUD
本文标题为:c# – 具有现有数据库模式的Dapper.Rainbow


基础教程推荐
- Unity 点击UI与点击屏幕冲突的解决方案 2023-04-10
- 微信小程序支付C#后端源码 2022-12-31
- C#连接数据库的几种方法 2023-06-04
- C#实现鼠标消息捕获 2023-05-22
- C#过滤sql特殊字符串的方法 2023-06-21
- c# – 按UTC日期的StackExchange.Redis密钥exiperation 2023-11-09
- Unity Shader模拟玻璃效果 2023-02-16
- C# 使用Fiddler捕获本地HttpClient发出的请求操作 2023-03-13
- Winform应用程序如何使用自定义的鼠标图片 2023-03-14
- C# 设置Chart的X轴为时间轴详情 2023-07-04