gpt4 book ai didi

c# - 在 LINQ 中使用 ExecuteCommand

转载 作者:行者123 更新时间:2023-11-30 14:33:31 25 4
gpt4 key购买 nike

我想在我的数据库上执行语句:

/*Disable Constraints & Triggers*/
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

/*Perform delete operation on all table for cleanup*/
exec sp_MSforeachtable 'SET QUOTED_IDENTIFIER ON; DELETE ?'

/*Enable Constraints & Triggers again*/
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'

/*Reset Identity on tables with identity column*/
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'

我有我的 LINQ 数据上下文:

   public static bool ClearDatabase()
{
GetContext().ExecuteCommand("");
}

MSDN 文档中不清楚的部分是......我应该将每个语句作为单独的命令运行还是制作一个大的长字符串来执行?

我还应该保留 exec 语句吗?

此外,如果有人知道使用 LINQ 清除数据库的更好方法,请告诉我。

谢谢

最佳答案

Execute 只是执行它;内部完全不透明(除了 {0} 等,它用于表示参数 - 即 {0} 变成类似于 @_p0 ,具有从 params 数组提供的值)。因此,只要您的 TSQL 有效(并且不包括 GO 等),它就应该可以正常工作。它当然不关心 TSQL 有多长。但是:尝试一下。

但是,我个人认为从数据上下文中运行它是有风险的,因为数据上下文可能具有缓存状态,这确实会使事情变得困惑。就个人而言,我会直接从 ADO.NET 运行它(或通过像“dapper”这样的助手)。但我想如果您在执行此操作后立即处置+丢弃(并可能重新创建)数据上下文,它会工作正常。

关于c# - 在 LINQ 中使用 ExecuteCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com