回答

1

最好的答案,我知道的是簡單地削減model.tt(插入合適的名稱)從當前項目文件並添加它到所需的項目。我甚至重寫了EF使用的.tt文件。

我是關注點分離的粉絲,並在以下項目中放置了適當的.tt文件:DataAccess(model.context.tt),Entity(model.tt)和Repository(model.repository.tt)。當然,你不得不擺弄.tt文件的內容來指向.edmx,但這很簡單。要導致所有的t4變換髮生,在VS2012 Build |中有一個選項轉換所有T4,這將處理解決方案中的所有T4文件。

請遵循以下流程:

如果它尚不存在,請創建.edmx。

右鍵單擊,選擇「添加代碼生成項目」添加EF DbContext 5.0生成器,如果你還沒有這樣做(我假設這是你想修補的那個,但這個過程適用於任何t4) 。

這將讓你你的兩個.TT文件 - 模型和model.context。

拖放到一個Windows資源管理器,找到該目錄中的model.tt文件,將其複製到您的「實體」目錄(無論您希望t4生成到哪裏)。

回到VS中,將其從.edmx項目中刪除並將「添加現有項目」刪除到新項目中。

例如,如果您的兩個項目的名稱如上所示(DataAccess包含.edmx,包含模型信息的實體),那麼您需要更改model.tt文件中的輸入文件的名稱的值(第5行) 「常量字符串INPUTFILE = 」的.edmx的名稱「 爲」 .. \指南含有的.edmx的的.edmx \名」。

運行T4和很好用。

0

如果您的意思是代碼沒有生成,那就是一個錯誤。這是我們用來跟蹤它的錯誤http://entityframework.codeplex.com/workitem/453 - 它包含一些解決方法。另一種選擇是通過強制執行代碼生成右鍵單擊TT文件並選擇「運行自定義工具」

+0

嗯,沒有代碼生成,但有兩個t4模板,我不希望其中一個被移動到一個單獨的程序集。 – Mixitrixi

相關問題