2009-02-23 67 views
0

我有一個ASP.NET Web應用程序,其中包含用於實施其自己的數據庫模式的代碼;此代碼在應用程序啓動時運行。從命令行運行網絡應用代碼?

我最近開始使用LINQ to SQL,並且我已經添加了一個預生成事件來在我的數據庫上運行SqlMetal,以便獲取表示我的數據庫表的對象。

真的很酷的是,如果我可以在預生成事件中強制執行數據庫模式,然後運行SqlMetal。事實上,如果模式發生變化(例如,我向表中添加一個字段),我必須(a)構建並運行一次網站,以便應用程序啓動並執行模式,然後(b)再次構建它讓SqlMetal運行。

所以:從命令行運行我的web應用程序中的代碼有哪些選擇?

回答

1

這就是我們所做的。

我們有一個本地一鍵式構建需要在簽入之前運行(集成構建也在每個檢入中的獨立環境中運行)。

的NANT腳本:

  1. 重建使用從頭數據庫Tarantino(數據庫變更管理)
    • 清潔&編譯
    • 複製的DLL到一個單獨的目錄
    • 運行單元測試針對DLL

我們有一個單獨的SQL Metal腳本,但你的問題是讓我看看在第1步和第2步之間插入呼叫。這樣你的數據庫更改和linq生成的文件總是同步。

0

您可以編寫一個使用CodeDOM解釋存儲庫中文件的小程序,也可以直接在預生成事件中調用編譯器可執行文件。

使用CodeDOM可以避免必須知道編譯器可執行文件在哪裏的問題,但是如果您的代碼不能在沒有任何依賴關係的情況下包含在一個文件中,那麼它不可用並且調用編譯器,那麼執行結果是更好的選擇。