我現在正嘗試構建一個控制檯應用程序,我可以在其中插入一些數據到我的數據庫並將sql輸出到文件中一個額外的。我的想法是,我可以使用這些數據遷移或類似的東西。從Entity Framework中生成可用於數據遷移的可用sql
我有幾個查找表,我想預先填充數據,我認爲這比手寫sql更好。如果有人需要查看價值,那麼它就在代碼中。
我使用EF Tracing什麼,我已經走到這一步,讓我來記錄SQL實體框架通過執行以下操作
我迷上到他們的行動創造以訪問跟蹤
private void WriteSqlToString(CommandExecutionEventArgs args)
{
sqlTrace.Append(args.ToTraceString());
}
其中給出這樣的事情
insert [dbo].[Members]([EmailAddress], [FirstName], [LastName])
values (@0, @1, @2)
select [Id]
from [dbo].[Members]
where @@ROWCOUNT > 0 and [Id] = scope_identity()
-- @0 (dbtype=String, size=60, direction=Input) = "[email protected]"
-- @1 (dbtype=String, size=-1, direction=Input) = "TestFirstName"
-- @2 (dbtype=String, size=-1, direction=Input) = "TestLastName"
我會是第一個牽我的手,因爲我不擅長手工編寫SQL。我搞砸了這一點,試圖讓它在sqlserver express中執行,但由於未聲明變量而不斷髮生錯誤。
是否有人認爲值得繼續嘗試使這個工作或我錯過了一個更好的解決方案嗎?
這裏的一些代碼的參考
public void CreateSqlFile()
{
using (MyContext context = tracingContextFactory.Create(WriteSqlToString))
{
Migrate(context);
context.SaveChanges();
}
StreamWriter file = new StreamWriter(migrationPath);
file.WriteLine(sqlTrace.ToString());
file.Close();
}
如果你想成爲一名程序員,值得你學習如何編寫sql。我聽說過這本書的好處,在10分鐘內自學SQL。 –
我知道SQL到一個合理的水平,但在每天的基礎上,我會說我寫一些也許每6個月一次。這只是一個數據輸入的情況,爲什麼不嘗試編寫一個程序,這樣我就不必編寫sql,並讓它通過驗證編譯器和EF在由attribution提供的內置數據驗證中進行驗證。此外,正確的intellisense額外獎金。但是,嘿,如果手動數據輸入是你的東西,那麼就有它。 – Neil