3

我試圖使用實體框架4和POCO爲我的MVC 3項目。可能是,我不明白這個ORM的主要想法,但問題是以下幾點:Poco + Entity Framework 4.我應該在哪裏添加用於使用Poco類的方法?

  1. 我加ADO .NET實體數據模型,並根據數據庫做模型。
  2. 我點擊添加代碼生成項目並添加了ADO .NET POCO實體生成器。
  3. 它爲每個數據庫表製作類。
  4. 我想添加一些方法來處理數據(添加,更新,刪除,GetAll等)到適當的模型。 對於LINQTOSQL,我添加了部分類並將它們放到模型中。但現在我不能這樣做,因爲:

a)模型文件夾具有相同名稱的類,這是由POCO創建的。

b)如果我將我的部分類放在另一個文件夾中,它將是另一個名稱空間 - 因此,這些類不會是部分類。

c)如果我把我的代碼放在POCO類中,它可以在更新POCO期間被破壞。

我該如何使用它?哪裏可以放置我的數據處理方法? 是爲POCO和EF製作其他項目的最佳方式 - http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx

+1

爲什麼不同文件夾中的部分類有另一個名稱空間?您可以控制名稱空間。 – BrokenGlass 2011-04-08 19:10:46

回答

2

首先,您不必在POCO中編寫您的CRUD, 有許多地方可以在edmx.cs文件中執行此操作,或者編寫一個稱爲CRUD Services的層,它可以處理數據庫使用上下文對象的操作

現在來到你的問題,

  1. 創建單獨的模型文件夾,將Model類在那裏。 模型類可能會喜歡這個,

    EmployeeDepartmentModel 
    { 
    prop EmpList List(Emp); 
    prop DeptList List(Dept); 
    //Emp and Dept are my POCOs 
    } 
    
  2. 所以現在我必須填寫這兩個列表(您CRUD問題), 對於這一點,我會在控制器類中創建一個方法(它能夠更好地寫這樣在一些其他庫的邏輯,但目前我建議你在控制器創建),

    FillTheModel() 
    { 
        EmployeeDepartmentModel.EmpList = EDMX.GetAllEmployees; 
        EmployeeDepartmentModel.DeptList = EDMX.GetAllDepartments; 
    } 
    
  3. 現在你可以綁定這個模型你的看法。

2

您可以將部分類放在另一個文件夾中並修改名稱空間。

2

我同意allisewell,但如果你真的想要的部件添加到部分類,給文件的另一個名字, 例如MyPoco.Part2.cs或修改t4模板來命名生成的文件 Poco.Generated.cs

相關問題