我有以下代码:
Using cmd As SqlCommand = Connection.CreateCommand
cmd.CommandText = "UPDATE someTable SET Value = @Value"
cmd.CommandText &= " WHERE Id = @Id"
cmd.Parameters.AddWithValue("@Id", 1234)
cmd.Parameters.AddWithValue("@Value", "myValue")
cmd.ExecuteNonQuery
End Using
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何方法可以将最终的SQL语句作为String获取,它应该如下所示:
UPDATE someTable SET Value = "myValue" WHERE Id = 1234
Run Code Online (Sandbox Code Playgroud)
如果有人想知道为什么我会这样做:
考虑这种情况.
您有一个存储库,允许对其进行某些调用.这些调用使用LINQ,并且就返回的数据量而言可能相对昂贵.
鉴于在我的情况下,如果数据是旧的并不是太糟糕 - 可以实现缓存,因此每次调用都不会执行大而昂贵的查询.嘿,我们甚至可以实现一些缓存策略来确定何时根据时间或用途再次执行该查询.
我试图解决的问题是如何在缓存中键入它.一种方法是简单地说:
"querytype1" = Particular LINQ expression
"querytype2" = Particular LINQ expression
Run Code Online (Sandbox Code Playgroud)
然后通过一个简单的字符串键入缓存.但是,鉴于我们正在使用LINQ,我们是否可以通过LINQ表达式本身来键入缓存?我理解性能指标,但无论如何要比较两个LINQ表达式是否相同?