zoukankan      html  css  js  c++  java
  • 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/

     

  • 相关阅读:
    微信小程序——引入WeUI组件库(二)
    微信小程序——引入WeUI组件库(一)
    Centos 安装Sentinel
    Nacos安装与启动教程
    vue 2.9.6升级到3X版本
    window consul安装和运行
    基于Vue、Springboot网站实现第三方登录之QQ登录,以及邮件发送
    Dockerfile创建镜像
    Docker端口映射和容器互联
    Docker数据管理
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/10611277.html
Copyright © 2011-2022 走看看