我已經看到了如何一個可以移動model.tt
(其中包含POCO實體類)這個問題的幾個答案文件到一個單獨的項目在VS2010移動EF 5數據庫第一POCO類,以單獨的項目vs2012 EF5
這似乎不適用於EF5,它的原因似乎是model.tt
文件是edmx文件的子項。
我如何在實體框架5/VS 2012中實現相同?
我已經看到了如何一個可以移動model.tt
(其中包含POCO實體類)這個問題的幾個答案文件到一個單獨的項目在VS2010移動EF 5數據庫第一POCO類,以單獨的項目vs2012 EF5
這似乎不適用於EF5,它的原因似乎是model.tt
文件是edmx文件的子項。
我如何在實體框架5/VS 2012中實現相同?
最好的答案,我知道的是簡單地削減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和很好用。
如果您的意思是代碼沒有生成,那就是一個錯誤。這是我們用來跟蹤它的錯誤http://entityframework.codeplex.com/workitem/453 - 它包含一些解決方法。另一種選擇是通過強制執行代碼生成右鍵單擊TT文件並選擇「運行自定義工具」
嗯,沒有代碼生成,但有兩個t4模板,我不希望其中一個被移動到一個單獨的程序集。 – Mixitrixi