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


75

我很困惑,无法理解这句话的含义:

EntityModelDataModelViewModel

任何人都可以帮助我理解它们吗?谢谢你们。


3
关于实体和模型之间的区别-在stackoverflow.com/questions/5863870/…上
Ross Attrill 2013年

Answers:


46

希望我在这里不会错过您的观点king.net ...

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

  • 实体代表任何现实世界的实体-例如学生,课程,
  • 一个实体将具有属性-例如,学生具有名字,姓氏,出生日期
  • 实体将具有关系-例如,学生“正在注册”课程(其中学生和课程是具有属性的实体,而“正在注册”是关系)。
  • 关系可以是“一对一”,“一对多”或“多对多”-例如,一个学生“被注册”了许多课程,而类似地,一门课程“有”许多学生。
  • 关系也有基数

在实体之间添加关系会创建一个“数据模型”。您已对一些现实世界系统以及该系统中的内部实体/对象建模。下一步是对其进行规范化,以确保其符合“标准格式”。

用ERD术语来说,您可能具有“逻辑”和“物理”模型。逻辑以简单的高级术语描述了数据模型,从而取消了实现数据模型所需的技术细节。它代表了系统解决方案概述。物理模型包括实际实现系统所需的技术细节(例如,实现“多对多”关系所需的“多对多联接表”)。

这是一些在线教程(尽管我确定必须有成千上万):

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

希望这会有所帮助,韦恩


谢谢回答和解释。我不会只是MVC模式,但我的意思是所有的“MVX”模式- ,MVC,。MVCP MVVM再次感谢你。很有帮助
agent47 2012年

66

这些术语的定义很模糊。您将在不同的地方找到不同的定义。

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

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

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

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

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

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

有关更多详细信息,请访问我的博客文章:Entity vs Model vs ViewModel vs DataModel


3

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

让我们考虑来自任何数据库的表[SQL,ORACLE,Informix,Cassandra ..]作为示例。

类:

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

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

实体:

  • 将表拖放/添加到dbmx / edmx后,它称为Entity。

  • 每个实体都是从其对应的类生成的,我们可以向实体添加属性,这些属性用于使用
    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;
}

2

实体:

实体是对象关系映射(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; }
    }
}

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

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

模型:

在MVC内,我们有一个层负责表示先前存储的数据,给定的对象可能是在先前示例中建模的人员的实例。该层是模型。该模板将用于构造视图。

ViewModel:

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层模型不同),它建立了代表真实世界实体的元素之间存在的关系。这是一个非常全面的主题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.