每天学一点,每天积累一点,进步就不止一点点!PS:好记性不如烂笔头,学会总结,学会思考~~~ ----要飞翔,必须靠自己!

灰太狼的梦想

好记性不如烂笔头,学会总结,学会思考~~~

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 代理类【动态代理实体类】:

  1. POCO 类必须要声明成Public的
  2. POCO类不能是密封的(sealed)
  3. POCO类不能是抽象的
  4. 每一个导航属性,必须声明为Public,Virual
  5. 每一个集合属性必须是ICollection<T>
  6. 上下文类中的 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/

 

posted @   灰太狼的梦想  阅读(558)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏