如何从数据库中删除所有数据并插入新的使用Microsoft.SqlServer.Management.Smo;<



现在我只使用这个选项

ScriptingOptions options = new ScriptingOptions();
options.ScriptSchema = false;
options.ScriptData = true;
options.ScriptForCreateDrop = true;
options.WithDependencies = true;

但是我得到的输出脚本只有

INSERT [t].[Table] ([f], [f1], [f2], [f3], [f4], [f5], [f6]) VALUES (N'SomeData', N'SomeData', N'SomeData', N'SomeData', CAST(N'SomeData' AS DateTime2), CAST(N'SomeData' AS DateTime2), NULL)

但是我想在INSERT之前得到DELETE ACTION

DELETE FROM [t].[Table]
INSERT [t].[Table] ([f], [f1]) VALUES (N'SomeData', N'SomeData')

我怎么能做到呢?帮助请

乌利希期刊指南:我只是使用其他选项并将结果保存到另一个可访问的

ScriptingOptions optionsForClearData = new ScriptingOptions();
optionsForClearData.ScriptSchema = false;
optionsForClearData.ScriptData = true;
optionsForClearData.ScriptForCreateDrop = true;
optionsForClearData.ScriptDrops = true;

代码给我的结果StringCollections与值DELETE FROM [t].[table]然后我把它放入一个大字符串中然后像。sql回滚文件那样保存它使用这部分代码

var tt = new StringCollection();
var s = new List<string>();
foreach (var tbl in Tables.Reverse())
{
s.AddRange(dbs.Tables[tbl].EnumScript(optionsForClearData));
}
foreach (var tbl in Tables)
{
s.AddRange(dbs.Tables[tbl].EnumScript(options));
}
tt.AddRange(s.ToArray());
MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms);
var text = new string[tt.Count];
tt.CopyTo(text, 0);
tw.Write(string.Join("n",text));
tw.Flush();
ms.Position = 0;
return new FormFile(ms, 0, ms.Length, "backup", 
FileName+".sql");
PS:是的,我知道我错过了"使用"with streams (RAW CODE)

不应该使用管理库对数据库进行CRUD。您需要通过数据提供程序发送经过验证的查询或调用存储过程

我推荐Dapper,它是由Stack Overflow自己构建的。性能非常好(我相信它只比ADO慢一点点)。NET,这是非常惊人的),减少了很多ADO。您可以编写自己的查询

,并拥有尽可能多的微调控制。或者,对于低/无代码选项,也有实体框架。性能没有那么好,但功能肯定非常丰富。

如果你不想要任何外部库,正如我提到的,ADO .NET写得更多,但非常快

相关内容

  • 没有找到相关文章

最新更新