2012-09-11 34 views
21

在VS 2010和EF 4.4中,當在實體框架中使用DBContext生成器時,您可以移動和編輯.tt文件,以便您的POCO對象位於不同項目中比你的DBContext文件。實體框架5和Visual Studio 2012不同項目中的POCO類

請參閱HereHere查看我正在談論的示例。

在VS2012/EF5中,這似乎是不可能的。 POCO類作爲EDMX文件下的子項生成。這些文件不能從Visual Studio中複製。從資源管理器移動文件無助於您在編譯時重新創建移動的文件。

我在這裏錯過了一些基本的東西嗎?

我沒有使用任何代碼生成項目與EF5(而我與EF4.x.)這可能是區別?

回答

64

在Visual Studio 2012中,當您添加ADO.NET實體數據模型(* .edmx)時,它包含上下文的T4模板和EDMX文件子項的模型類。例如,如果添加MyModel.edmx,將有4個子項目如下:

  1. MyModel.Context.tt
  2. MyModel.Designer.cs(在C#項目)
  3. MyModel.edmx .diagram
  4. MyModel.tt

MyModel.tt生成POCO實體作爲子項目。要在單獨的項目中生成實體,請按照以下步驟操作:

  1. 創建單獨的類項目。
  2. 添加新項目,選擇「EF 5.x DbContext生成器」模板。這會創建* .tt文件。例如MyModel.tt。
  3. 編輯模板文件,如下所示:

    const string inputFile = @"MyModel.edmx"; // old value (remove) 
    const string inputFile = @"..\MyOtherProjectName\MyModel.edmx"; // new value 
    
  4. 在你的其他項目,展開EDMX文件並MyModel.tt單擊鼠標右鍵,選擇刪除。

就是這樣。你完成了。現在,您可以在一個項目中使用模型和上下文,而在單獨項目中使用實體。

+4

最好的答案,你解決了我最大的問題!!!! –

+1

Awasome答案,謝謝。 –

+1

非常棒,我有同樣的問題。 –

2

所以,你必須現在通過Windows資源管理器。然後在移動的.tt文件中編輯EDMX文件的路徑。一旦你這樣做,它的作品。 (我知道我說它沒有在上面,但我第一次嘗試時肯定犯了錯誤。)

6

退房以下職位:Visual Studio 2012 - Can't move EF .tt files

它講如何可以將assoicated的.csproj文件中刪除.TT文件的依賴性信息到.edmx文件。這將允許您從解決方案資源管理器中拖動.tt文件。

只要確保更新.tt文件開頭的文件路徑指向。如前面的回答,如下所示EDMX:

const string inputFile = @"..\EFTest\EFTestModel.edmx"; 

有實際數塊和步驟和丟失的任何單獨一個能夠防止從正常工作的POCO類的分離。我創建了一個博客帖子,詳細描述了整個過程,你可以查看下面:在VS.NET 2012

分離實體上生成從T4模板框架POCO類:
http://allen-conway-dotnet.blogspot.com/2013/01/separating-entity-framework-poco.html

+0

我也有類似的問題,但我也必須編輯項目文件中的一些條目。請參閱:http://stackoverflow.com/questions/12200258/visual-studio-2012-cant-move-ef-tt-files/16216001#16216001 – GrandMasterFlush

+0

+1。真棒解釋。 –