簡體   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