假设我在 MS SQL 中有一个存储过程。现在我已经转移到 MySQL,我想将所有 SQL 查询保留在 C# asp.net 核心应用程序中。问题始于更大的查询,其中可能是 SQL 动态内部变量。IE Select @TypeId := TypeId, @StartDate := StartDate
From Test_test
Where Id = @Id
在此示例中,@Id 应该由 Dapper 映射(此变量从 DAL 传递到 MySQL 数据库),但是不应映射 @TypeId 和 @StartId。还有更多仅为 SQL 查询创建的动态变量映射 null 将中断查询,即这里是 SQL 的结果NULL := StartDate代替@StartDate := StartDate如何将 dapper 与 SQL 查询一起使用,其中查询正在创建不应由 Dapper 映射的动态变量?
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
只要您包含AllowUserVariables=true
在连接字符串中,在使用 Dapper 的查询中使用 SQL 变量应该完全没有问题。这允许客户端库在您的 SQL 中“忽略”@TypeId
并且@StartDate
不需要在MySqlCommand.Parameters
集合中指定它们。
只要您在传递给 Dapper 的匿名对象中不包含具有这些名称的属性(即,不要这样做new { StartDate = DateTime.Now, TypeId = 1 }
),Dapper 就不会使用这些名称创建任何参数,也不会将任何值映射到它们,并且将 SQL 传递给 MySQL 服务器以作为服务器端变量进行评估。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消