【发布时间】:2020-11-26 01:49:21
【问题描述】:
所以也许有人可以指出我正确的方向。
我有一个 .NET 应用程序正在运行的大量 SQL 查询(我将尽力解释,因为我无法发布代码)。
我决定做的是分解查询,这样数据库就不会出现死锁。
长话短说有没有办法保留所有变量
Declare @sometable as Table
因为每个SqlCommand 都需要它之前的查询中的信息和 ID。
这是使用相同的连接。我已经在这工作了 4 天了,我的头在转动。
这是我尝试使用相同命令并更改查询文本的一些代码
foreach (var query in querys)
{
command.CommandText = query;
DataSet ds = new DataSet();
try {
var reader = command.ExecuteReader();
while (!reader.IsClosed)
ds.Tables.Add().Load(reader);
mergedResults.Add(ds);
}
编辑:这里是需要在每个地方使用的大量查询的顶部示例
DECLARE @dbID int;
DECLARE @idDomain int;
DECLARE @DomainName varchar(255);
DECLARE @IdDrivers TABLE
(
idDriver int,
startTime datetime,
endTime dateTime
);
【问题讨论】:
-
您需要在问题/代码中提供更多详细信息。您是否希望在后续查询中使用一个查询的结果?或者您有一些想要跨查询重用的参数?您可以考虑使用实体框架(或其他 ORM)并将子查询移动到您的 C# 代码中
-
我希望我可以使用一个 orm,但写信的人确实试图重新发明轮子,现在我们被困住了。从技术上讲,我需要的只是参数和一些子查询将信息插入临时表以使用它们甚至更低。原始查询是一个 20k 行代码,带有选择声明等...
-
当然,google sql server 表变量和临时表.. 并决定哪个最适合您。听起来它也需要捆绑到一个 sproc 中
-
主要问题是所有这些临时变量都是动态的
-
@Jonathan 通常不需要将其设为全局;全局变量无法扩展
标签: c# sql sql-server ado.net