POCO的理解
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使用。
POCO的理解的更多相关文章
- 正确理解DTO、值对象和POCO
今天推荐的文章比较技术化也比较简单,但是对于一些初学者而言,可能也是容易搞混的概念:就是如何理解DTO.值对象和POCO之间的区别. 所谓DTO就是数据传输对象(Data Transfer Objec ...
- 理解POCO
理解POCO(Plain Old CLR Object)先要理解POJO. 1.什么是POJO? POJO的名称有多种,pure old java object .plain ordinary jav ...
- (转)理解POCO
POCO的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样.所以POCO的解释就是“Plain Old C# Object”. 从字面上翻译为“纯洁老式的C#对象 ...
- POCO Controller 你这么厉害,ASP.NET vNext 知道吗?
写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...
- POCO库——Foundation组件之核心Core
核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本.次版本.补丁版本.预发布版本: Poco.h:简单地包含了头文件Found ...
- 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记.
说明 为何要写这篇文章 ,之前看过阿二的梦想船的<Poco::TCPServer框架解析> http://www.cppblog.com/richbirdandy/archive/2010 ...
- Code First is a bad name,这些年我们对Code First的理解都错了 !很震惊吧?
当看到这个时,我也很震惊.估计绝大多数的人和我一样,这些年来,一直不知道Code Fisrt的真实意义.下面是一篇讲述此情况的译文,欢迎围观,若有翻译不当的地方,请指正,谢谢.如果被惊到了,请点赞!, ...
- poco vs Boost[ZZ]
http://wooce.iteye.com/blog/634395 POCO的优点: 1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级. 2) 比 boost:a ...
- Poco::TCPServer框架解析
Poco::TCPServer框架解析 POCO C++ Libraries提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.文件.流,网络协议包括:HTTP.FTP.SMTP ...
随机推荐
- nodejs使用promise实现sleep
个人博客 地址:http://www.wenhaofan.com/article/20181120180225 let sleep = function (delay) { return new Pr ...
- 三分钟快速上手TensorFlow 2.0 (后续)——扩展和附录
TensorFlow Hub 模型复用 TF Hub 网站 打开主页 https://tfhub.dev/ ,在左侧有 Text.Image.Video 和 Publishers 等选项,可以选取关注 ...
- 利用Marshal来管理非托管资源
void MarshalChartDemo() { string name = "xuwei"; IntPtr pName = Marshal.AllocHGlobal(name. ...
- 143. 最大异或对(Trie树存整数+二进制)
在给定的N个整数A1,A2……ANA1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...
- tensorflow——乘法
线性代数中,乘法是很重要的运算,具体的矩阵乘法原理可以翻教材,或看一下阮大神的这篇文章:http://www.ruanyifeng.com/blog/2015/09/matrix-multiplica ...
- C++-POJ2159-Candies[spfa][栈优化][邻接表]
#include <cstdio> ,N=; struct edge{int v,w,next;}e[M];int head[N],cnt; void add(int u,int v,in ...
- 洛谷P1147 连续自然数和
https://www.luogu.org/problem/P1147 #include<bits/stdc++.h> using namespace std; int main(){ i ...
- NVMe over Fabrics 协议Discovery服务交互过程跟踪
Discovery服务过程跟踪 对于NVMe over Fabrics的subsystem,有两种类型:Discovery子系统和NVM子系统.这里介绍与Discovery子系统相关的交互内容(即:在 ...
- 安全相关的Linux知识
本文用于记录在安全中的Linux常用命令,基础命令可以移步去菜鸟教程(https://www.runoob.com/linux/linux-tutorial.html)学习 Linux重要的4个热键 ...
- 将图片中的一部分图片用ps进行旋转
先用选择工具选择你要进行变动的那部分图像,至于选择的方法有多种而且得看你的图片来决定采取何种选择方法.然后在英文输入状态下按下“CTRL+T”出现变换框,你将鼠标移动对角点上,当鼠标变为一种旋转的图标 ...