7.翻译:EF基础系列---EF中的实体类型
原文地址:http://www.entityframeworktutorial.net/Types-of-Entities.aspx
在Entity Framework中有两种实体类型:一种是POCO实体,另一种是动态代理实体。
POCO实体【Plain Old CLR Object】
POCO实体就是一个不依赖于任何特定框架的类,它就像任何其他普通的.NET CLR类一样,这也是为什么叫做“Plain Old CLR OBject”。
EF6和EF Core都支持POCO实体。POCO实体同样被叫做persistence-ignorant objects。
POCO实体支持和EDM生成的实体类型的那样的大多数的查询、插入、更新、删除操作。下面是一个Student的POCO实体。

Dynamic Proxy Entities (POCO Proxy)【动态代理实体】
动态代理实体是一个运行时的代理类,它包装着POCO实体。动态代理实体允许lazy loading【懒加载】。
请注意:动态代理实体,仅仅在EF 6中被支持,在EF Core 2.0中不支持动态代理实体。
一个POCO实体,需要满足下面的要求,才能成为一个POCO 代理类【动态代理实体类】:
- POCO 类必须要声明成Public的
- POCO类不能是密封的(sealed)
- POCO类不能是抽象的
- 每一个导航属性,必须声明为Public,Virual
- 每一个集合属性必须是ICollection<T>
- 上下文类中的 ProxyCreationEnabled选项必须是false
下面的POCO实体满足了上面提到的所有要求,在程序运行的时候,就成为了一个动态代理类。

请注意:默认情况下,动态代理对于每个实体都是Enabled。然而,你可以关闭动态代理,通过在上下文类中,写下面的代码:context.Configuration.ProxyCreationEnabled = false;
在运行的时候,EF API 将会创建上面Student实体的代理类实例,这个Student代理实例的类型是:System.Data.Entity.DynamicProxies.Student

使用ObjectContext.GetObjectType(),来看看动态类型里面包装的类型是啥:

好了,EF的基础系列,第七篇就介绍完了。有不明白的可以留言,谢谢支持。
附录:
EF 6官方文档: https://docs.microsoft.com/zh-cn/ef/ef6/
EF Core官方文档:https://docs.microsoft.com/zh-cn/ef/core/
7.翻译:EF基础系列---EF中的实体类型的更多相关文章
- 10.翻译:EF基础系列---EF中的持久性
原文链接:http://www.entityframeworktutorial.net/EntityFramework4.3/persistence-in-entity-framework.aspx ...
- 8.翻译:EF基础系列----EF中实体的状态
原文链接:http://www.entityframeworktutorial.net/basics/entity-states.aspx 在实体的生命周期中,EF API维护着每一个实体的状态,对于 ...
- 5.翻译:EF基础系列---EF中的上下文类
原文地址:http://www.entityframeworktutorial.net/basics/context-class-in-entity-framework.aspx EF中的上下文类是一 ...
- 4.翻译:EF基础系列--EF架构
原文地址:http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx 下面的图形,展示了EF的总体架构: 让我们来 ...
- 3.翻译:EF基础系列--EF怎么工作的?
原文链接:http://www.entityframeworktutorial.net/basics/how-entity-framework-works.aspx 这里,你将会大概了解到EF是怎么工 ...
- 1.翻译:EF基础系列--什么是Entity Framework?
大家好,好久不见,EF系列之前落下了,还是打算重新整理一下. 先说说目前的打算:先简单了解一下EF基础系列-->然后就是EF 6 Code-First系列-->接着就是EF 6 DB-Fi ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- Java基础系列1:Java基本类型与封装类型
Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...
- Entity Framework 教程——Entity Framework中的实体类型
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...
随机推荐
- 通过HttpClient4.5模拟Form表单文件上传
public static void main(String[] args) { CloseableHttpClient httpclient = HttpClients.createDefault( ...
- Maven项目同时使用lib下的Jar包
测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32 配置步骤: 在WEB-INF下新建lib目录并加入自己的包: 右键项目 -> Build Path - ...
- JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别
黑马程序猿入学blog ... 假设这章节非常难懂的话应该返回去先看 JAVA_SE基础--10.变量的作用域 定义的位置上差别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在 ...
- J4架构应用过程中出现的问题与解决摘录
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6369346.html sendRedirect()的页面不能用EL表达式获取参数:因为是新的request.E ...
- vim自动保存折叠
我经常使用的是手工折叠方式,就是 :set foldmethod=manual vim常用的折叠命令有: zf:折叠选定的行 zo:打开折叠 zR:打开所有折叠 zM:关闭所有折叠 zd:删除折叠 我 ...
- Porting .Net RSA xml keys to Java
byte[] expBytes = Base64.decodeBase64(exponentElem.getText().trim())); byte[] modBytes = Base64.deco ...
- HttpServletRequest对象(一)
javaweb学习总结(十)——HttpServletRequest对象(一) 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HT ...
- Redis从入门到精通:初级篇(转)
原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...
- svn 命令行下常用的几个命令
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domai ...
- shell脚本read -t 超时输入测试
[root@server0 shellStudy]# cat timeout.sh #!/bin/bash TIMEOUT=3 #超时间隔 echo "What is your name?& ...