2017-02-16 71 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对象加载。