【问题标题】:Entity Framework - Separate Model For Each Table is necessary?实体框架 - 每个表的单独模型是必要的吗?
【发布时间】:2017-07-05 14:37:19
【问题描述】:

我正在为我的一个项目使用具有 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 模型我是否遵循正确的方法?

【问题讨论】:

  • 我只想知道,如果我们的模型文件夹中有 TableName.cls 文件和 EDMX,这是否是一种好习惯?如果没有,请告诉我避免这种情况的方法。
  • 您是否尝试使用 Visual Studio 提供的内置模板创建 EF 模型和上下文?这将创建必要的类供您直接使用。现在要显示数据,建议根据您要显示的数据创建视图模型类。一个视图模型只能代表 db 类,也可以组合多个 db 类。如果您有视图仅在一个 db 类上执行 CRUD,那么一对一的视图模型更有意义。
  • 所以我需要使用 EF 生成的“SpName_Result”类来使其适用于我的情况,对吗?你说的是哪个构建模板,是 T4 吗?
  • "SpName_Result" 看起来像是为存储过程的输出生成的类。为什么要编辑存储过程的输出。无论如何,如果这是您的要求,那么是的,您需要这样做。您可以在线获取大量带有 EF 的示例 MVC 应用程序,您可以使用它们来开始您的项目。
  • 我有一些关于代码的问题,但在这里讨论它们是不合适的,因为它已经建议将此讨论移至聊天。如果您想在私人聊天中进一步讨论,请告诉我。

标签: c# json ajax asp.net-mvc entity-framework


【解决方案1】:
  1. 如果您的 EF 模型包含在 MVC 项目中,我会说不,您不必为每个实体创建单独的模型 - 只需使用 EF 创建的模型。

  2. 如果您的 MVC 项目被拆分为数据、域和表示层(项目),您可以将生成的数据类与 EDMX(在数据层中)分开,并在域层中生成它们。请参阅 Julie Lerman 的 Plural Sight 培训“Entity Framework 5 入门”“从 EDMX 文件中分离生成的域类”一章。

  3. 如果您是纯粹主义者,那么您应该至少有 3 层(数据、域和表示),并且域对象不应是 EF 生成的对象。它们应该根据应用程序的需要进行定制,并根据需要从 EF 对象中加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多