POCO的名称有多种,pure old clr object、 plain ordinary clr object等 POCO的概念是指那些没有从任何类继承,也没有实现任何接口,更没有被其它框架侵入的C#对象

POCO的意义就在于它的简单和灵活性,因为他的简单和灵活,是得POCO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实 POCO与PO、VO的区别   

POCO是指简单C#对象(Plain Old clr Objects、pure old java object 或者 plain ordinary clr object)。   PO是指持久对象(persistant object持久对象)。   

VO是指值对象或者View对象(Value Object、View Object)。注意,本文的VO特指View Object。   

持久对象实际上必须对应数据库中的entity,所以和POCO有所区别。比如说POCO是由new创建,由GC回收。但是持久对象是 insert数据库创建,由数据库delete删除的。基本上持久对象 生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库 Connection之中,Connnection关闭以后,持久对象就不存在了,而POCO只要不被GC回收,总是存在的。   

由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POCO不同,起码PO相对于POCO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要 PO在使用上尽量和POCO一致,对于程序员来说,他们可以把PO当做POCO来用,而感觉不到PO的存在 POCO的扩展   POCO仅包含最简单的字段属性,没有多余的东西,它本质上就是一个普通的C# Object。 但是在POCO的基础上,能够扩展出不同的对象。 为POCO增加了持久化的方法(Insert、Update、Delete……)之后,POCO就变成了PO。 为POCO增加了数据绑定功能之后,POCO就变成了View Object,即UI Model。 为POCO增加业务逻辑的方法(比如单据审核、转帐……)之后,POCO就变成了Domain Model。 POCO还可以当作DTO使用。

最新文章

  1. Linux系统MySQL开启远程连接
  2. Android-自定义meta-data扩展数据
  3. Android保存图片到系统图库
  4. QT5删除隐藏目录+隐藏文件(使用Process::start函数调用系统命令,且等待到结束)
  5. C# 线程更新UI
  6. SQL某个字段在原内容上增加固定内容或replace查找替换内容
  7. logistic回归和probit回归预测公司被ST的概率(应用)
  8. Pycharm使用总结
  9. asp.net 建多个项目实现三层的实例——读取一张表中的记录条数
  10. IIS部署ASP.Net Core 502.5错误和解决
  11. tomcat中显示本地图片①(已解决)
  12. Back To Top
  13. Pulsar-Producer实现简介
  14. LeetCode(33):搜索旋转排序数组
  15. Mybatis七(MBG 逆向工程)
  16. 勒索软件Locky、Tesalcrypt等使用了新的工具躲避检测
  17. 苹果越狱后必备软件,总有你需要的!11月23日追加14个,支持【iOS4】
  18. Sketch插件新利器——使用Mockplus DS制作设计规范
  19. ssh免密登录配置方法
  20. ubuntu下安装mongo扩展

热门文章

  1. C#简单鼠标键盘钩子KMHook
  2. tcp与http协议 以及python的实现
  3. android studio编译包真机安装失败解决方案记录
  4. 3ds Max File Format (Part 2: The first inner structures; DllDirectory, ClassDirectory3)
  5. Java实现图形界面的三部曲及IDE中的窗口设计
  6. C++-hihoCode1545-小Hi和小Ho的对弈游戏[树上Nim]
  7. 洛谷P1583 魔法照片
  8. error C2825: '_Iter': 当后面跟“::”时必须为类或命名空间 -- 原因可能是参数错误或者自定义函数名和库函数名冲突
  9. 训练20191007 2017-2018 ACM-ICPC Latin American Regional Programming Contest
  10. 访问windows共享无法分配内存问题解决