编写简洁的通用服务来连接数据库并从表中读取数据

问题描述 投票:0回答:1

我正在尝试编写一个通用的简洁服务方法,可以在提供连接字符串和表名称后从 SQL 表中获取所有数据。

我有以下 Dapper 服务代码。

dbConnectionString 让代码使用项目设置连接到数据库。

我已尝试以下操作,但缺少正确使用的结果类型或方法签名。

   public class DapperService : IDapperService
       {        
        private readonly string dbConnectionString;

        public DapperService(IOptions<ProjectSettings> config)
        {
            dbConnectionString = config.Value.DbConnection;
        }

        public async List<T> GetTableData(string tableName, CommandType commondaType = CommandType.Text)
        {
            using IDbConnection db = new SqlConnection(dbConnectionString);
            return await db.QueryAsync<T>(commandType: CommandType).toList();
        }


c# sql .net service dapper
1个回答
0
投票

是的,这里有两件事。首先,我们需要一个查询(假设您的提供商不支持“table direct”);

"select * from " + tableName
可能是一个好的开始,尽管如果表名是外来的,它可能需要转义,并且转义规则是特定于提供者的。您永远不应该接受用户输入的表名称,因为表名称无法参数化。

其次,我们需要在某个时刻知道

T
,因此 servicemethod 需要是通用的 - 即
DapperService<T>
GetTableData<T>
;我可能会选择该服务(包括界面,
IDapperService<T>
) - 但最终这是你的选择。

或者,您可以单独提供,或者使用“Dapper.Contrib”之类的工具,它已经完成了大部分工作。

© www.soinside.com 2019 - 2024. All rights reserved.