what is difference between a Model and an Entity

I am confused to understand what is the meaning of this words:

Entity, Model, DataModel, ViewModel

Can any body help me to understanding them please? Thank you all.

86313 次浏览

我希望我没有错过你的重点。

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

  • 一个实体代表任何真实世界的实体-例如学生、课程、,
  • 一个实体会有属性-例如学生的名字、姓氏、出生日期
  • 一个实体将会有关系-例如学生“注册”课程(其中学生和课程是具有属性的实体,而“注册”是关系。
  • the relationship may be "one-to-one", "one-to-many" or "many-to-many" - e.g. one student "is enrolled on" many courses and similarly one course "has" many students.
  • relationships also have cardinality

Adding relationships between entities creates a "data model". You've modeled some real world system and the internal entities/ objects in that system. Next step is to normalise it to ensure it meets "normal form".

在 ERD 术语中,您可能有“逻辑”和“物理”模型。逻辑用简单的高级术语描述数据模型,这些术语保留了实现数据模型所需的技术细节。它表示系统解决方案概述。物理模型包括实际实现系统所需的技术细节(例如实现“多对多”关系所需的“多对多连接表”)。

以下是一些在线教程(尽管我确信肯定有上千个) :

我不太确定您在相关上下文中所说的“模型”和“视图模型”是什么意思。不确定您是否会将其与模型-视图-控制器范例(MVC)混淆。在这里,模型是一些数据组件,视图表示该数据的观察者(如表或图形 UI 组件)。有很多在线解释“模型视图控制器”或“ MVC”。

希望这能帮上忙,韦恩

First of all,to know about Entity you must know about Class. 它们都表示相同的字段,但是术语根据声明发生了变化。

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

课程:

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

 //Student class
public class Student()
{
//Properties
public int StudentNumber;
public string StudentName;
}

实体:

  • 在将表拖放/添加到 dbmx/edmx 之后,它被称为 Entity.

  • 每个实体都是由其对应的类生成的,我们可以添加 attributes to entity which are used for performing operations using
    或实体

数据模型:

  • 包含表中的所有字段。

  • DATAMODEL 是对 cshtml 或控制器的直接类引用 您可以访问这些属性来执行 CRUD 操作

观察模式:

  • 在某些情况下,我们需要更多地执行 CRUD 操作 多于一个型号(表)。
  • 因此,我们将所有必需的模型组合在一个类中,并在 its constructor.

例如: 我们假设

//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;
}

The definition of these terms is quite ambiguous. You will find different definitions at different places.

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

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

ViewModel: The term ViewModel originates from the MVVM (Model View ViewModel) design pattern. There are instances in which the data to be rendered by the view comes from two different objects. In such scenarios, we create a model class which consists of all properties required by the view. It’s not a domain model but a ViewModel because, a specific view uses it. Also, it doesn’t represent a real world object.

DataModel : 为了解决问题,对象之间相互交互。一些对象共享它们之间的关系,并因此形成一个表示对象和它们之间关系的数据模型。

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

要了解更多关于对象关系的信息,请访问我的博客文章: 对象关系基础

更多细节请访问我的博客文章: Entity vs Model vs ViewModel vs DataModel

实体:

实体是对象关系映射(ORM)中真实世界元素的表示形式,即实体框架(Entity Framework)。此表示将映射到数据库中的表,并将其属性转换为列。一个实体是使用一个简单的 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; }
}
}

Working with UI creation is a complex task. To keep things organized, programmers separate their applications into layers.

每个层负责一个任务,这样可以防止代码被搞乱。正是在这个场景中出现了像 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; }
}
}

数据模型:

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

简单的说:
DTO 代表数据传输对象。DTO 主要用于在服务(Web 服务、 API 等)之间传输数据,这些服务可以包含不同实体的各种属性(有或没有它们的 ID)。以这一行为例来说明 DTO: 假设一个购物网站将通过 Web 服务向一家航运公司发送送货请求。它的 DTO 是这样的: CustomerFullNameShippingFeeShippingAddress。在这个例子中,CustomerFullNameCustomer实体的属性 FirstName + LastName的组合,而 ShippingFee是目的地、税务等过程超过其他一些实体的结果。

On the contrary, Entities are bunch of properties gathered to represent a single entity with a specific ID (e.g., Teacher, Student, Employee, etc.). In other words, DTOs are a bunch of meaningless properties gathered to be sent to the client and a DTO doesn't necessarily have relationship to the other DTOs, while an Entity includes properties of a specific object with meaningful relation to the other entities. In a relational database paradigm, we can look at DTOs as views' row while Entities are tables' row with the primary key.

然而,模型是这两者的结合。一个模型可以包含几个相关的实体和额外的数据来处理实际的应用程序/UI 问题。考虑一个名为 CustomerOrdersModel的模型,它包含 Customer实体、 List<Order>实体和一个额外的布尔标志 PayWithCredit,该标志指定用户是使用借记卡还是信用卡支付。