使用dapper,为什么在一次使用连接时创建的临时表在第二次使用同一连接时不可用

使用dapper,为什么在一次使用连接时创建的临时表在第二次使用同一连接时不可用,第1张

使用dapper,为什么在一次使用连接创建的临时表在第二次使用同一连接时不可用

我不完全了解发生了什么,但是我可以通过在自己的Execute中创建临时表来解决此问题,而不是像在代码中同时创建表和填充表的Execute中那样显示在我的问题中。

即,以下工作:

 connection.Execute(@"     create table #PagesOfUsers(row int,EmailAddress nvarchar(max),LastName nvarchar(max),FirstName nvarchar(max),Id uniqueidentifier)"     ); connection.Execute(@"     insert into #PagesOfUsers     SELECt ROW_NUMBER() OVER (order by LastName, FirstName, EmailAddress) row,         EmailAddress, LastName, FirstName, Id          FROM Users          WHERe LastName like @search or FirstName like @search or EmailAddress like @search ", new { search = search } ); int count = connection.Query<int>(@"     SELECt count(*) from #PagesOfUsers ").Single<int>();

这并不可怕,但是很不方便。值得注意的是,我宁愿根本不必 _显式_创建临时表。确实,我最初将create / populate *** 作编码为SELECT
INTO,因此不必逐项列出临时表的列。但这在随后的查询中也遇到了“无效对象”错误,因此我尝试使用显式的CREATETABLE来查看它是否有所作为,并在发现问题后在此处张贴了我的问题。

我看到的行为是,当在同一Execute中创建并填充临时表时,表面看来成功后,实际上并没有在tempdb中。这让我想知道原始代码中的Execute是否在做任何事情!据我所知,这相当于没有采取任何行动。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5640632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存