首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有映射,使用动态变量的Dapper将无法工作。这破坏了SQL。如何在更大的SQL查询中使用Dapper?

如果没有映射,使用动态变量的Dapper将无法工作。这破坏了SQL。如何在更大的SQL查询中使用Dapper?
EN

Stack Overflow用户
提问于 2019-03-07 16:14:54
回答 1查看 996关注 0票数 0

假设我在MS中存储了一个proc。现在,我已经转到了MySQL,我希望将所有的SQL查询都保存在C# asp.net核心应用程序中。

问题首先是更大的查询,其中可以是SQL动态内部变量。

Select @TypeId := TypeId, @StartDate := StartDate From Test_test Where Id = @Id

在这个示例中,@Id应该由Dapper映射(这个变量从DAL传递到MySQL数据库),但是不应该映射@TypeId和@StartId。

  1. 还有更多的动态变量只为SQL查询创建。
  2. 映射null将中断查询,这是SQL的结果 NULL := StartDate而不是@StartDate := StartDate

在查询创建不应该由dapper映射的动态变量的SQL查询中,如何使用Dapper?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-07 20:04:42

只要在连接字符串中包含AllowUserVariables=true,在使用Dapper的查询中使用SQL变量就不会有任何问题。这允许客户端库在SQL中“忽略”@TypeId@StartDate,而不需要在MySqlCommand.Parameters集合中指定它们。

只要您在传递给Dapper的匿名对象中不包含带有这些名称的属性(即,不要执行new { StartDate = DateTime.Now, TypeId = 1 }),Dapper就不会用这些名称创建任何参数,不会将任何值映射到它们,并将MySQL传递到MySQL服务器,以便作为服务器端变量进行计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55048311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档