Tag: dapper

使用Dapper映射超过5种类型

我目前正在构建一个将12个表连接在一起的SELECT查询。 我一直在使用Dapper进行所有其他查询,效果很好。 问题是,generics方法只需要五个通用参数。 我以前修改过代码以支持最多6个用于另一个查询,但是现在我真的不认为我应该破解6个更多级别的generics。 有没有办法将dapper传递给一个类型数组,并将结果作为一个对象数组返回,如果必须的话我可以手动编译? 我也可能以错误的方式接近问题! 任何帮助将不胜感激!

使用Dapper与返回游标的Oracle存储过程

如何将Dapper与返回游标的Oracle存储过程一起使用? var p = new DynamicParameters(); p.Add(“foo”, “bar”); p.Add(“baz_cursor”, dbType: DbType.? , direction: ParameterDirection.Output); 这里,DbType是System.Data.DbType,它没有Cursor成员。 我尝试过使用DbType.Object,但这对OracleClient和OracleDataAcess都不起作用。 相反,使用OracleType或OracleDbType的可能方法是什么?

导致“扩展方法无法动态调度”的原因在这里?

编译错误 ‘System.Data.SqlClient.SqlConnection’没有名为’Query’的适用方法,但似乎有一个名称的扩展方法。 无法动态分派扩展方法。 考虑转换动态参数或调用扩展方法而不使用扩展方法语法。 现在,我知道如何解决这个问题,但我正在努力更好地理解错误本身。 我正在上课,以利用Dapper。 最后,我将提供一些更多自定义function,以使我们的数据访问类型更加简化。 特别是在追踪和东西的建设。 但是,现在它就像这样简单: public class Connection : IDisposable { private SqlConnection _connection; public Connection() { var connectionString = Convert.ToString(ConfigurationManager.ConnectionStrings[“ConnectionString”]); _connection = new SqlConnection(connectionString); _connection.Open(); } public void Dispose() { _connection.Close(); _connection.Dispose(); } public IEnumerable Query(string sql, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, int? […]

使用Dapper的存储库设计模式

这可能是代码审查的问题,而不是堆栈溢出。 我正在使用Dapper for MicroORM来检索并将数据保存到SQL Server 2014.我在DTO Proj中有DTO类,它代表从DB检索到的数据或保存到DB。 我正在使用存储库模式,所以在我的服务层,如果需要存储库,我使用构造函数DI注入该依赖项,然后调用存储库上的方法来完成工作。 所以我要说有2个名为CustomerService和CarService的服务。 然后,我有2个存储库,一个CustomerRepository和一个CarRepository。 我有一个接口,它定义每个存储库中的所有方法,然后定义具体的实现。 下面显示了一个示例方法(调用Stored Proc来执行DB INSERT(注意,存储过程的实际字符串变量被定义为类顶部的私有字符串): public void SaveCustomer(CustomerDTO custDTO) { using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“myDB”].ConnectionString)) { db.Execute(saveCustSp, custDTO, commandType: CommandType.StoredProcedure); } } 这一切都很好但我发现自己在每个存储库中的每个方法中重复使用块。 我有两个真正的问题,如下所述。 是否有一种更好的方法,我可能会以某种方式使用BaseRepository类,每个其他存储库inheritance,Base将实现数据库连接的实例化? 对于系统上的多个并发用户,这仍然可以正常工作吗? **** ****更新 根据Silas的回答,我创建了以下内容 public interface IBaseRepository { void Execute(Action query); } public class BaseRepository: IBaseRepository { public void Execute(Action […]