2011-11-22 31 views
1

我最近一直在學習MVVM/EF4(用於C#),並且遵循了Julie Lerman的視頻。在她的視頻中,她演示瞭如何在一個項目中創建EDMX,然後在另一個項目中使用它,並將第一個作爲第二個參考。EF4.1在另一個C#項目中使用T4

我現在遇到了EF4.1,想知道是否可以在一個項目中創建EDMX和T4項目(* .tt文件),然後在另一個項目中使用它們。我創建了EDMX文件,並使用「添加代碼生成項」選項在第一個項目中創建* .tt文件。

任何人都可以告訴我這是如何完成或指向我的一些教程?

TIA

+0

我不會那樣做。在實體模型和領域模型之間使用映射(自動映射器),否則將來你會得到一個維護混亂的問題,對實體模型的任何修改都會影響你的整個應用程序 – jgauffin

+0

@jgauffin通常我會這樣做,有用的,我可以在一個項目中使用.edmx,我的域模型(生成的類)在另一個,我添加部分類包含更多的邏輯。這樣,我可以傳遞這些領域模型類而不需要引用EF。但是,當與界面層交互時,我將它們映射到視圖模型(藉助於Automapper)以保持良好的分離。我只在少數情況下將我的域模型帶入界面。 –

回答

0

這其實很簡單。您可以將您的.tt移動到另一個項目,它幾乎可以開箱即用。
但是有兩件事情你應該知道:

  1. 更改參考T4模板中的.edmx文件(必須提供正確的文件路徑)。
  2. 您對模型的更改不會自動反映在由模板生成的文件中。您必須右鍵單擊模板並選擇「運行自定義工具」以更新文件。

你已經試過了嗎?你有什麼問題嗎?在這裏舉報,我會盡力提供幫助。

+0

你能解釋一下如何將.tt文件移動到我的第二個項目中嗎?我曾嘗試剪切/粘貼,並添加現有的項目。切割/粘貼似乎不起作用,當我嘗試添加現有項目時,找不到任何.tt文件(儘管我看到所有單獨表格的.cs文件)。 – BrianKE

+0

在Visual Studio中,在解決方案資源管理器窗口中,我將我的.tt從原始項目剪切/粘貼到目標。 –

+0

謝謝尼爾森,我有兩個項目在不同的解決方案,它不會剪切/粘貼。一旦我在同一解決方案中打開了兩個項目,它就可以工作。 – BrianKE

0

我想說的最好的方法是使用EDMX和Code-First產品來拉入現有的數據庫並跳過啓動Code-first項目(而不是手動輸入類。已經生成了它們(應該有一個選項可以在自己的文件中創建每個類),刪除t4和edmx,並通過直接構建代碼優先的模型向前移動

+1

如果你已經有一個數據庫,最好的選擇是做一個數據庫優先的方法。 –

+1

這個項目正在使用現有的數據庫,所以我必須採用數據庫優先的方法。 – BrianKE

+0

是先使用db來生成初始模型,然後從那裏開始代碼優先。 –

相關問題