模型和实体有啥区别

Posted

技术标签:

【中文标题】模型和实体有啥区别【英文标题】:what is difference between a Model and an Entity模型和实体有什么区别 【发布时间】:2012-02-03 08:46:22 【问题描述】:

我不明白这句话的意思是什么:

EntityModelDataModelViewModel

任何机构可以帮助我理解它们吗?谢谢大家。

【问题讨论】:

关于实体和模型之间的区别-***.com/questions/5863870/…有一个很好的答案 相关帖子 - Entity vs Model vs View Model, Entities VS Domain Models VS View Models & ORM Entities vs. Domain Entities under Entity Framework 6.0 【参考方案1】:

这些术语的定义相当模糊。你会在不同的地方找到不同的定义。

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

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

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

DataModel:为了解决问题,对象相互交互。一些对象在它们之间共享一种关系,从而形成一个表示对象及其之间关系的数据模型。

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

要了解有关对象关系的更多信息,请访问我的博文:Basics of Object Relationships

更多详情请访问我的博文:Entity vs Model vs ViewModel vs DataModel

【讨论】:

【参考方案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 中,我们有一个层负责表示先前存储的数据,给定的可能是前面示例中建模的人的实例。这一层是模型。该模板将用于构建视图。

视图模型:

MVVM 架构中的 ViewModel 非常类似于 MVC 架构中的模型。然而,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 层模型),它建立了表示现实世界实体的元素之间存在的关系。这是一个非常全面的主题。

【讨论】:

【参考方案3】:

首先,要了解Entity,你必须了解Class。 它们都代表相同的字段,但术语会根据声明而变化。

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

类:

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

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

实体:

在将表拖放/添加到 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;

【讨论】:

【参考方案4】:

我希望我没有错过你在 king.net 上的意思...

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

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

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

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

这里有一些在线教程(虽然我相信肯定有成千上万):

http://www.maakal.com/maakalDB/Database101ERDpart1.htm http://www.itteam-direct.com/gwentrel.htm http://www.bkent.net/Doc/simple5.htm

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

希望这会有所帮助,韦恩

【讨论】:

感谢您的回答和解释。我不仅仅是MVC 模式,而是所有“MVx”模式-MVCMVCPMVVM。再次感谢你。很有帮助。

以上是关于模型和实体有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 / Doctrine中的实体和模型有啥区别

ER图和数据库模型图有啥区别呢?

dbfirst和codefirst有啥区别

Django模型中的OneToOneField和ForeignKey有啥区别

实体和类有啥区别?

使用实体框架 Cascade 和 ClientCascade 有啥区别?