繁体   English   中英

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

[英]How i can delete all data from DB and insert new using Microsoft.SqlServer.Management.Smo;

现在我只使用这个选项

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

但我只得到输出 sript

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')

我该怎么做? 请帮助

UPD:我只是使用其他选项并将结果保存到另一个病毒

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:是的,我知道我错过了“使用”流(RAW CODE)

您不应该将管理库用于 CRUD 到数据库。 您需要通过数据提供者发送经过验证的查询或调用存储过程

我会推荐由 Stack Overflow 自己构建的Dapper 非常高效(我相信它只比 ADO.NET 慢一点,这非常了不起),减少了很多 ADO.NET 样板文件,并且您可以根据需要进行微调,因为您可以编写自己的查询

或者,对于低代码/无代码选项,还有Entity Framework 性能不高,但功能肯定非常丰富。

如果您不想要任何外部库,正如我所提到的,ADO .NET 的编写要多一些,但速度非常快

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM