dapper 相关问题

Dapper是Stack Overflow团队开发和使用的.NET的微型ORM,主要以原始性能为主要目标。




带有dapper查询语法

在这里使用dapper进行查询,从而获得错误消息=“ ora-00936:丢失表达式 “在我的查询中。我想知道我在这里错过了什么? 公共类

回答 1 投票 0

如何安全地将C#中的表名为表名进行参数化以防止SQL注入?

我在项目中使用dapper,我想将表名称作为查询中的动态参数。 这是我的代码:

回答 1 投票 0

使用NPGSQL,

i'm与npgsql和dapper我有一些复合数据类型的表: 创建类型dateTimeOffset作为 (( “ dateTimeUtc”时间戳没有时区, “

回答 1 投票 0

在与异步方面的foreach中找到“连接不支持多重反应的人” 我使用Dapper.simplecrud具有以下代码: var test = new fallenvormentalCondition [] { 新的fallenvironmentalcontition {id = 40,fallid = 3,emoventeralConditionID = 1}, 新

var test = new FallEnvironmentalCondition[] { new FallEnvironmentalCondition {Id=40,FallId=3,EnvironmentalConditionId=1}, new FallEnvironmentalCondition {Id=41,FallId=3,EnvironmentalConditionId=2}, new FallEnvironmentalCondition {Id=42,FallId=3,EnvironmentalConditionId=3} }; test.ToList().ForEach(async x => await conn.UpdateAsync(x));

回答 3 投票 0


如何使用moq.dapper<dynamic>模拟QueryAsync

我们有一个下面的类,可以在参数中提供的表中找到记录,然后在事务中删除它们。 公共异步任务 我们有一个下面的类,可以在参数中提供的表中找到记录,然后在事务中删除它们。 public async Task<IEnumerable<DataTableRecordsResponse>> DeleteDataAsync(string tenantId) { if (string.IsNullOrEmpty(tenantId)) { throw new ArgumentNullException(nameof(tenantId)); } var deletedRecords = new List<DataTableRecordsResponse>(); try { using (IDbConnection conn = _sqlDbConnection.CreateConnection()) { conn.Open(); using (IDbTransaction transaction = conn.BeginTransaction()) { try { foreach (string table in s_allowedTableName) { string selectQuery = $"SELECT * FROM {table} WHERE TenantId = @tenantId;"; IEnumerable<dynamic> records = await _dapperWrapper.QueryAsync<dynamic>(conn, selectQuery, new { tenantId }, transaction); deletedRecords.Add(new DataTableRecordsResponse(table, records)); if (records.Any()) { string deleteCommand = $"DELETE FROM {table} WHERE TenantId = @tenantId; "; await _dapperWrapper.ExecuteAsync(conn, deleteCommand, new { tenantId }, transaction); } } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); _logger.LogException(ex); throw; } finally { _logger.LogEvent("Tenant data purge operation completed"); } } } } catch (Exception ex) { _logger.LogException(ex); throw; } return deletedRecords; } } 我正在尝试使用以下代码模拟QueryAsync,但是,它返回null: [TestMethod] public async Task Successful_Transaction_Should_Complete_Transaction_And_Return_Deleted_Records() { //Arrange _sqlDbConnection.Setup(c => c.CreateConnection()).Returns(_dbMock.Object); _bulkOperationHelper = new BulkOperationHelper(_sqlDbConnection.Object, _loggerMock.Object); _dbMock.SetupDapperAsync(c => c.QueryAsync<dynamic>(It.IsAny<string>(), It.IsAny<object>(), null, null, null)) .ReturnsAsync(_results); _dbMock.SetupDapper(c => c.ExecuteScalar(It.IsAny<string>(), It.IsAny<object>(), null, null, null)) .Returns(0); //Act List<DataTableRecordsResponse> deletedRecords = await _bulkOperationHelper.TenantDecommissioningBatchDelete(_tenantId, _tables); //Assert Assert.IsNotNull(deletedRecords); Assert.IsTrue(deletedRecords.Count > 0); Assert.IsTrue(deletedRecords.Count == 0); } thiseythe thiseytory似乎有一个关于此事的dapper存储库中的开放式。 由于不可能嘲笑QueryAsync,可以在以下添加到涂层库的包装类别。 public class DapperWrapper : IDapperWrapper { public async Task<IEnumerable<T>> QueryAsync<T>(IDbConnection connection, string sql, object param = null, IDbTransaction transaction = null) { return await connection.QueryAsync<T>(sql, param, transaction); } public async Task<int> ExecuteAsync(IDbConnection connection, string sql, object param = null, IDbTransaction transaction = null) { return await connection.ExecuteAsync(sql, param, transaction); } } 在单元测试中,类和IT方法可以被模拟如下: [TestMethod] public async Task DeleteDataAsync_ShouldCommitTransaction_WhenAllTablesProcessed() { foreach (string table in AllowedTables) { SetupMockForTableWithRecords(_mockConnection, _mockTransaction, _tenantId, table); } IEnumerable<DataTableRecordsResponse> result = await _tenantDataPurgeHelper.DeleteDataAsync(_tenantId); AssertResultsAndCommit(result); _mockTransaction.Verify(x => x.Commit(), Times.Once); } private void SetupMockForTableWithRecords(Mock<IDbConnection> mockConnection, Mock<IDbTransaction> mockTransaction, string tenantId, string table) { _mockDapperWrapper .Setup(x => x.QueryAsync<dynamic>(mockConnection.Object, $"SELECT * FROM {table} WHERE TenantId = @tenantId;", It.Is<object>(p => p.Equals(new { tenantId })), mockTransaction.Object)) .ReturnsAsync(new List<dynamic> { new { Id = 1, TenantId = tenantId } }); _mockDapperWrapper .Setup(x => x.ExecuteAsync(mockConnection.Object, $"DELETE FROM {table} WHERE TenantId = @tenantId;", It.Is<object>(p => p.Equals(new { tenantId })), mockTransaction.Object)) .ReturnsAsync(1); }

回答 1 投票 0


通过 NpgsqlConnection::ExecuteAsync 使用纯查询文本创建存储过程

我正在尝试从 C# 通过 Npsql 创建一个 stpored 过程 私有异步任务 TestExecute(string cmdQuery) { var cnnString = $"服务器=localhost;用户ID=admin;密码=somepass;

回答 1 投票 0

名称中包含破折号的列的参数

我正在将 Dapper 与 SQLite 结合使用。 我有一个定义如下的表: 创建表示例( id 整数不为空, “某个字段”文本 ); 我写了一个控制台应用程序...

回答 1 投票 0

使用内联查询进行单元测试 Dapper

我知道有几个问题与我的类似。 Dapper:单元测试 SQL 查询 但我认为上述问题没有一个符合我要求的明确答案。 现在,我正在开发...

回答 3 投票 0

将 Dapper 一对多(拆分)与泛型结合使用

我正在尝试使用 Dapper 以一对多关系映射对象。假设一个数据库包含一个 Departments 表和一个 People 表。 People 表有一个 DepartmentId 列来创建关系

回答 1 投票 0

PostgreSQL 存储过程因 Dapper 中的日期动态参数而失败

我正在将 PostgreSQL 与 .NET 项目结合使用,并且在使用动态参数传递 DATE 参数时通过 Dapper 执行存储过程时遇到问题。 存储过程定义...

回答 1 投票 0

通过 Dapper 传递日期参数时 PostgreSQL 存储过程执行失败

我正在将 PostgreSQL 与 .NET 项目一起使用,并且在传递 DATE 参数时通过 Dapper 执行存储过程时遇到问题。 存储过程定义如下: 创建或重新...

回答 1 投票 0

使用 Dapper 获取列表<string>或字典

SQLite 查询是“SELECT * FROM tblProducts WHERE Id = 1” 如何使用 Dapper 获取所有值的列表或具有属性和值的字典;

回答 1 投票 0

需要一个无参数默认构造函数或一个匹配的签名

我有一堂课如下: 公开课员工 { 私有 IEmployeeDataAccessor _employeeDataAccessor; 公共雇员(IEmployeeDataAccessor emda) { _employeeDataAccessor = emda ; ...

回答 3 投票 0

Dapper '需要一个无参数默认构造函数或一个匹配的签名'

我有一堂课如下: 公开课员工 { 私有 IEmployeeDataAccessor _employeeDataAccessor; 公共雇员(IEmployeeDataAccessor emda) { _employeeDataAccessor = emda ; ...

回答 3 投票 0

使用 Dapper 的 Sqlite。解析列时出错。无法将 System.Int64 类型的对象转换为 System.Double

我正在使用 fastcrud 和 dapper 将查询结果映射到我的自定义类型。我调查了 dapper 库,得出的结论是,我认为这是 Microsoft.Data.Sqlite pac 的问题...

回答 2 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.