模型和实体之间有什么区别

age*_*t47 50 entity entity-framework model datamodel viewmodel

我很难理解这个词的含义是什么:

Entity,Model,DataModel,ViewModel

任何人都可以帮我理解他们吗?谢谢你们.

Gau*_*lot 40

这些术语的定义非常模糊.您会在不同的地方找到不同的定义.

实体:实体表示域对象的单个实例作为记录保存到数据库中.它有一些我们在表中表示为列的属性.

模型:模型通常表示与问题或域空间相关的现实世界对象.在编程中,我们创建表示对象的类.这些类称为模型,具有一些属性和方法(定义对象行为).

ViewModel:术语ViewModel源自MVVM(模型视图ViewModel)设计模式.在某些情况下,视图要呈现的数据来自两个不同的对象.在这种情况下,我们创建一个模型类,它包含视图所需的所有属性.它不是域模型而是ViewModel,因为特定视图使用它.此外,它不代表现实世界的对象.

DataModel:为了解决问题,对象彼此交互.一些对象在它们之间共享关系,因此形成表示对象及其之间关系的数据模型.

例如,在管理客户订单的应用程序中,如果我们有客户和订单对象,那么这些对象在它们之间共享多对多的关系.数据模型最终取决于我们的对象彼此交互的方式.在数据库中,我们将数据模型视为引用其他一些表的表网络.

要了解有关对象关系的更多信息,请访问:对象关系的基础知识

有关更多详细信息,请访问:实体与模型对比ViewModel与DataModel

  • 不是相反吗?“实体”具有数据和行为,而“模型”是保存到数据库的对象? (3认同)

wmo*_*365 38

我希望我在这里没有错过你的观点.

无论如何,假设你在谈论实体建模或实体关系建模(ERD):

  • 实体代表任何现实世界的实体 - 例如学生,课程,
  • 实体将具有属性 - 例如,学生具有名字,姓氏,出生日期
  • 一个实体将有关系 - 例如学生"注册"课程(其中学生和课程是具有属性的实体,"注册"是关系.
  • 这种关系可能是"一对一","一对多"或"多对多" - 例如,一个学生"注册"许多课程,同样一个课程"有"许多学生.
  • 关系也有基数

在实体之间添加关系会创建"数据模型".您已经建模了一些真实世界系统以及该系统中的内部实体/对象.下一步是将其标准化以确保其符合"正常形式".

在ERD术语中,您可能具有"逻辑"和"物理"模型.逻辑以简单的高级术语描述数据模型,其中包含实现它所需的技术细节.它代表系统解决方案概述.物理模型包括实际实现系统所需的技术细节(例如实现"多对多"关系所需的"多对多连接表").

以下是一些在线教程(虽然我确信必须有数千个):

我不太确定你在相关背景下的"模型"和"视图模型"是什么意思.不确定您是否可能将此与模型 - 视图 - 控制器范例(MVC)混淆.这里,模型是一些数据组件,视图表示该数据的观察者(例如表或图形UI组件).有许多在线解释"模型视图控制器"或"MVC".

希望这会有所帮助,韦恩


Rav*_*ran 6

首先,要了解实体,您必须了解类。它们都代表相同的领域,但术语根据声明而变化。

让我们以任何数据库 [SQL、ORACLE、Informix、Cassandra..] 中的表为例。

班级:

通常,表在添加到 edmx 或 dbmx 之前被视为一个类。

 //Student class
        public class Student()
        {
        //Properties
        public int StudentNumber;
        public string StudentName;
        }
Run Code Online (Sandbox Code Playgroud)

实体:

  • 将表拖放到/添加到 dbmx/edmx 中后,它被称为实体。

  • 每个实体都是从其相应的类生成的,我们可以向实体添加属性,这些属性用于使用
    linq 或实体执行操作。

数据模型:

  • 包含表中的所有字段。

  • DATAMODEL 是对 cshtml 或控制器的直接类引用,您可以在其中访问属性以执行 CRUD 操作。

查看模型:

  • 在某些情况下,我们需要对多个模型(表)执行 CRUD 操作。
  • 因此,我们将所有需要的模型组合在一个类中,并在其构造函数中定义它们。

示例:让我们假设

//Student class
public class Student()
{
//Properties
public int StudentNumber;
public string StudentName;
}
//Marks Class
Public class Marks()
{
public int Maths;
public int Physics;
public int Chemistry;

//Now sometimes situations occur where we have to use one datamodel inside //other datamodel.
public Student StudentModel;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

实体:

实体是作为实体框架的对象关系映射 (ORM) 中真实世界元素的表示。此表示将映射到数据库中的表,其属性将转换为列。实体是使用 POCO 类编写的,该类是一个简单的类,如您在以下 C# 示例中所见:

using System;
using System.Collections.Generic;
using System.Text;

namespace MyAplication.Entity
{
    public class Person
    {
        public long PersonId { get; set; }
        public string Name { get; set; }
        public short Age { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 UI 创建是一项复杂的任务。为了使事情井井有条,程序员将他们的应用程序分成多个层。

每层负责一个任务,这可以防止代码混乱。MVC、MVVM等架构模式正是在这种情况下出现的。

模型:

在 MVC 中,我们有一个层负责表示先前存储的数据,给定的数据可以是前一个示例中建模的人的实例。这一层是模型。此模板将用于构建视图。

视图模型:

MVVM 架构中的 ViewModel 很像 MVC 架构中的 Model。然而,ViewModel 是数据的简化表示,仅包含构建视图所需的信息。

using System;
using System.Collections.Generic;
using System.Text;
using MyAplication.Web.ViewModel.BaseViewModel;

namespace MyAplication.Web.ViewModel.Person
{
    public class PersonNameViewModel : BaseViewModel<string>
    {
        //I just neet the name
        public string Name { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

数据模型:

它只是一个抽象模型(该模型不同于 MVC 层模型),它建立了表示现实世界实体的元素之间存在的关系。这是一个非常全面的主题。