gpt4 book ai didi

c# - Dapper.Rainbow 与现有的数据库模式

转载 作者:太空狗 更新时间:2023-10-30 00:42:28 26 4
gpt4 key购买 nike

我正在试用 Dapper。我喜欢我到目前为止所看到的。为了做简单的 CRUD,我使用 Dapper.rainbow。它工作得很好。但是,它仅在表具有名称为 Id 的标识列时才有效。拥有这样的数据库是有意义的,但我不能仅仅为了使用 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 操作和智能默认值,没有任何额外的东西。我还希望模型具有不直接映射到数据库的附加属性。例如 - FullName 属性在其 getter 中组合了 FirstName 和 LastName - 并且不将 FullName 添加到 Insert 和 Update 语句。

在大多数情况下,我希望主键列是 Id,但允许用属性覆盖。

最后,我希望表名默认与类名匹配,但允许用属性覆盖。

我最终编写了自己的 Dapper 扩展来解决这些问题。它在 Github 和 Nuget 上。希望对您有所帮助。

https://github.com/ericdc1/Dapper.SimpleCRUD

关于c# - Dapper.Rainbow 与现有的数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com