繁体   English   中英

Dapper.Rainbow与现有的数据库架构

[英]Dapper.Rainbow with existing database schema

我正在尝试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();
        }

有没有更好的方法来处理这个如列映射/注释或完全不同的东西?

我读过这样的问题

使用类属性手动映射列名称

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM