2017-02-16 69 views
0

我正在爲我的一個項目使用實體框架和MVC結構。實體框架 - 爲每個表單獨模型是必要的?

由於EF管理所有與數據庫相關的變化和「更新模型從數據庫」我們得到的最新型號。

所以我需要我的每表來使用它作爲一個對象,並設定值成的創建單獨的model.cs類。

更具體地講, 整個項目使用Ajax調用其所有操作。 在這些Ajax調用中,我將值傳遞給JSON中的數據。

現在,在控制器的水平我需要檢索從JSON值。
對於那個如何使用我的實體模型特定的表?
我是否需要爲每個表創建模型?

無法自動爲每個表格生成模型?

更新: 參考代碼添加。

1. 
Let's say 
I have a table Student with , StudentID INT, ClassID INT , Name VARCHAR(). 
2. 
Here is the JavaScript Code 
    function AddStudent() { 
    var data = { "ClassID": 1, "Name": 'ABC' } 

    $.ajax({ 
     url: '/Admin/AddNewStudent', 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     cache: false, 
     data: JSON.stringify(data), 
     success: function (ServiceResponce) { 
      refreshgird(); 
     } 
    }); 
} 

    3. 
    StudentController.cs 

    public JsonResult AddNewStudent(Student obj) 
      { 
       try 
       { 
        var add = db.AddNewStudent(obj.ClassID, obj.Name).ToString(); 
        return Json(add, JsonRequestBehavior.AllowGet); 
       } 
       catch (Exception ex) 
       { 
        return Json(ex.ToString(), JsonRequestBehavior.AllowGet); 
       } 
      } 

4. Student.cs 
public class Student 
    { 
     public int ClassID{ get; set; } 

     public string Name{ get; set; } 
    } 

我的問題是通過創建Student.cs型號我下面的正確方式或不?

+0

我只是想知道,如果我們在帶有EDMX的模型文件夾中有TableName.cls文件,那是好的做法還是不行? 如果沒有請讓我知道如何避免這種情況。 – ParthKansara

+1

您是否嘗試使用Visual Studio提供的內置模板創建EF模型和上下文?這將創建必要的課程供您直接使用。現在爲了顯示數據,建議根據要顯示的數據創建視圖模型類。一個視圖模型只能表示數據庫類或可以組合多個數據庫類。如果你有意見只在一個數據庫類上執行CRUD,那麼一對一視圖模型更有意義。 –

+0

所以我需要使用由EF生成的「SpName_Result」類來使它在我的情況下工作,對吧?你在說什麼Build Template,T4嗎? – ParthKansara

回答

1
  1. 如果你的EF模型包括在MVC項目中,我會說不,你不必爲每個實體單獨的模型 - 只需使用由EF中創建的。

  2. 如果你的MVC項目被分成一個數據,域名和表示層(項目)你可以單獨從EDMX(數據層)所生成的數據類,並讓它們在領域層中產生。請參閱Julie Lerman的「Plugin Sight培訓」「Entity Framework 5入門」「從EDMX文件中分離生成的域類」一章。

  3. 如果你是一個純粹的那麼你應該有至少3層(數據,域和Presentation)和域對象不應由EF產生的那些。它們應該根據應用程序需求進行定製,並根據需要從EF對象加載。