什么时候用Model,什么时候用Entity?[转载知乎-备忘]
在建立一个实体类的时候,究竟是用Model还是用Entity?比如MVC中,Model存了数据实体,但是他被称为Model,而在EF中,Entity也是存放数据实体,却被称作Entity,这两者有何区别?那究竟什么时候应该用Model什么时候应该用Entity呢?
赵劼:
一般这种称谓都是根据上下文来的,例如Model是因为有MVC,或MVVM的场景下所以叫做Model,这里的Model就是一种职责。Entity则更接近是一种表达业务概念的实体,例如一个User,一个Order等等,而这样的实体在MVC中起到Model的职责。EF的作用是帮助你存取Entity的,而不关心你把这个Entity用作MVC里的Model还是Observer模式中的Subject对象。
当然以上都是我常用的理解方式,不同的项目内部完全可以有不同的理解方式,只要项目内部统一,不会引起混淆即可。命名一直是件很难的事情,实际中绝大部分项目都是要权衡的,也都是有各种不完美的地方的。例如,.NET类库中各种ObservableCollection,ReadOnlyCollection,按照“规范”都应该叫做ObservableList,ReadOnlyList,而Collection这是个更宽泛的概念。
我们可以花一部分精力去考虑这方面问题,但也不用纠结太多,头大且对项目也没太大帮助。
作者:赵劼
链接:http://www.zhihu.com/question/25256772/answer/30290376
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
MVC是模式,EF是ORM,角色不同。MVC里面的Model是C发给V的。这些Model应该被高度优化,仅仅被对应的View用来显示,额外的数据应该被Model层砍掉以节省磁盘访问、内存占用或者数据库带宽。通常情况下,View的数量都会比你数据库的Entity要多,比如用户要求的各种各样的报表,所以对应的Model也应该比数据访问层的Entity多。
用编写资源管理器界面打个比方。在不同的显示模式下。这里的Model可以是WIN32_FIND_DATA这样的常用文件属性。也可以是常用文件属性加上IShellItemImageFactory返回的缩略图。
假设你的View和你的EF的实体类完全一一对应,可以不编写额外的Model。但是随着需求的增多,很难一直使用EF的实体类来做Model。
作者:蒋晟
链接:http://www.zhihu.com/question/25256772/answer/30301743
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
什么时候用Model,什么时候用Entity?[转载知乎-备忘]的更多相关文章
- [备忘]Asp.net MVC 将服务端Model传递的对象转为客户端javascript对象
<script type="text/javascript"> var jsObject = @Html.Raw(Json.Encode(Model.Objects)) ...
- Symfony2 Doctrine从现有Database生成Entity(转载自http://blog.it985.com/6809.html)
在我的以前一章Symfony之十分钟入门说了怎样生成数据库,然后设计实体Entity,再同步数据库的表结构,一般我们的顺序都是这样:生成数据库->设计实体Entity->同步数据库表结构. ...
- Model对象嵌套list赋值方式(备忘)
首先定义Model对象:var deliveryInfoModel = new DeliveryInfo(); 第二步定义嵌套的list对象:var list = new List<Delive ...
- 增加几个entity framework 的函数 (记录备忘)[转]
public static class DatabaseExtensions { public static DataTable SqlQueryForDataTatable(this Databas ...
- Entity Framework Model First下改变数据库脚本的生成方式
在Entity Framework Model First下, 一个非常常见的需求是改变数据库脚本的生成方式.这个应用场景是指,当用户在Designer上单击鼠标右键,然后选择Generate Dat ...
- 开发中model,entity和pojo的区别
Entity接近原始数据,Model接近业务对象- Entity:是专用于EF的对数据库表的操作, Model:是为页面提供数据和数据校验的,所以两者可以并存 POJO:POJO是Plain Ordi ...
- 实体entity、JavaBean、Model、POJO、domain的区别
实体entity.JavaBean.Model.POJO.domain的区别Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了. 按照 Sprin ...
- Entity Framework Tutorial Basics(12):Model First
Model First development with Entity Framework: In the Model First approach, you create Entities, rel ...
- How to: Use the Entity Framework Model First in XAF 如何:在 XAF 中使用EF ModelFirst
This topic demonstrates how to use the Model First entity model and a DbContext entity container in ...
随机推荐
- oracle安装操作及遇到的错误
一.准备工作 服务器环境: 服务器端:VMWARE下的win7 64位系统 客户端:宿主机 WIN7 64位系统 软件环境: win64_Oracle_11gR2 PLSQL Developer 11 ...
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found
错误信息: Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com. ...
- CXF发布webService服务以及客户端调用
这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...
- 微服务实战系列--Nginx官网发布(转)
这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...
- 关于已配置log4j,运行tomcat时显示警告的分析
有时候,我们在JavaEE项目中配置了log4j及其参数信息,但是启动tomcat时,仍会显示如下信息:
- Python安装mysql-python错误提示python setup.py egg_info
做python项目,需要用到mysql,一般用python-mysql,安装时遇到错误提示如下: Command "python setup.py egg_info" failed ...
- JQuery笔记汇总
jQuery相关资料 官网: jQuery官网 在线API: jQuery在线API W3School:W3School-jQuery教程(中文版哦) 下载jQuery:jQuery各版本下载 jQu ...
- 【232】◀▶ IDL显示地理图像
参考: 01 IMAGE 将图像数据以图形窗体的形式显示. 02 COLORBAR 在已经存在的IDL图形中增加一个colorbar或创建. 03 MAPGRID 在已经存在的IDL地图图 ...
- Scala中的None,Nothing,Null,Nil
在scala中这四个类型名称很类似,作用确实完全不同的. None是一个object,是Option的子类型,定义如下 case object None extends Option[Nothing] ...