簡體   English   中英

如何從SQL Server中填充一組實體框架代碼優先POCOS(一次關閉)?

[英]How do I populate a set of Entity Framework Code first POCOS from SQL server (once off)?

我們有自定義代碼,可通過創建一些對象並將其保存到DatabaseContext來擦除和初始化測試數據庫(我們將遷移用於模式,但不用於數據)。 但是,我們的測試人員創建了更多的數據,並且不想在進行全新部署時丟失其測試數據。 因此,我必須弄清楚如何將數據從SQL Server導入C#(一次關閉),因此可以使用我們的數據初始化程序來運行它。

我最初的方法是手動將數據復制粘貼到C#對象初始化器中,但是很快就變舊了,因為要復制100多行。

我的第二種方法是使用SQL Server中的SELECT語句創建對象,將C#初始化程序語法混合到SQL SELECT語句中,然后將SQL Server生成的C#字符串復制回Visual Studio。

盡管第二種方法似乎還可以,但是我想知道是否有一個我缺少的明顯解決方案(除了每次僅運行SQL INSERT腳本之外)。

我最終選擇了問題中提到的方法。 在SQL Select語句中生成C#對象初始化程序。

我收到的幾件事,大部分是顯而易見的:

  • 所有數字字段的CAST AS VARCHAR(盡管如果不這樣做,SQL Server會給出錯誤)。

  • 日期:轉換為VARCHAR並用DateTime.Parse()包圍

  • 使用CASE語句將SQL bool值(1/0)轉換為字符串的true / false。

  • 枚舉:生成演員表。

  • 如果使用自動編號ID,請記住在實例名稱前加上字母。 初始化后,將對象添加到DataContext中。

不要害怕在生成的代碼中引用您的C#代碼。 無論如何,它都不會在SQL Server中運行。

我只是創建一個SQL腳本來重新創建數據庫中的數據。
您可以通過命令行或C#運行此腳本。

您還有其他選擇。 備份測試數據庫,將該備份加載到與目標數據庫位於同一服務器上的新數據庫中,並在完成遷移(包括清除數據庫)后,發布跨數據庫INSERT...SELECT語句。

這種方法的好處是,如果測試團隊獲得他們喜歡的另一個版本,則可以進行備份並覆蓋登台數據庫,從而使他們能夠不斷構建更多數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM