主要是用于延迟加载,提高性能用的

只有定义成virtual后才可以延迟加载。

延迟加载,默认情况下,延迟加载被支持,如果你希望禁用它,必须显式声明,最好的位置是在 DbContext 的构造器中。

public MyDomainContext()
{
    this.Configuration.LazyLoadingEnabled = false;
}

这样延迟加载就如你所愿了。当查询一个实体集的时候,相关的子实体也一并加载。当 EF 访问实体的子实体的时候是如何工作的呢?你的集合是 POCO 的集合,所以,在访问的时候没有事件发生,EF 通过从你定义的实体派生一个动态的对象,然后覆盖你的子实体集合访问属性来实现。这就是为什么需要标记你的子实体集合属性为 virtual 的原因。

public class Order
{
   public int OrderID { get; set; }
   public string OrderTitle { get; set; }
   public string CustomerName { get; set; }
   public DateTime TransactionDate { get; set; }
   public virtual List<OrderDetail> OrderDetails { get; set; }
   public virtual List<Business> Businesses { get; set; }
}

转载于:https://www.cnblogs.com/sylone/p/9456671.html

CodeFirst实体类中,为什么都把ICollectionx定义成virtual?相关推荐

  1. java实体类中有枚举类型_当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?...

    当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...

  2. Spring Boot接口返回的字段名和实体类中定义的字段名不一致

    问题描述:在使用@ResponseBody注解返回一个Controller接口数据时会遇到接口中返回的字段与实体中定义的字段不一致的情况,例如实体类中定义的字段名如下: @ApiModelProper ...

  3. 实体类中如何自动生成serialVersionUID

    1. 为什么要实现序列化接口Serializable? 答:实现序列化接口Serializable的目的是为了类可持久化,Java中的序列化机制能够将一个实例对象信息写入到一个字节流中(只序列化对象的 ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. 查询出的数据记录字段要与实体类中的属性名一致

    查询出的数据记录字段要与实体类中的属性名一致 转载于:https://www.cnblogs.com/1020182600HENG/p/6183031.html

  6. EF架构~将数据库注释添加导入到模型实体类中

    回到目录 相关文章系列 第八回 EF架构~将数据库注释添加导入到模型实体类中 第二十一回  EF架构~为EF DbContext生成的实体添加注释(T4模板应用) 第二十二回  EF架构~为EF Db ...

  7. java实体类没有映射文件_MyBatis自动生成实体类、DAO和XML映射文件,并去掉实体类中的getter和setter方法...

    今天花了3个多小时搞定了这个事情,写个Blog记录一下,先看一下最终生成的实体类吧. packagecom.mybatis.pojo;importlombok.AllArgsConstructor;i ...

  8. 关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题

    关于使用Swagger-ui时文档显示实体类中隐藏部分字段的问题 所遇到的问题: 在swagger-ui测试页面测试接口时,由于在实体类中添加部分临时的实体类导致测试文档过于冗杂 如图: 解决: po ...

  9. 为什么在实体类中 用private Integer id;而不是private int id;?

    id在数据库中一般是自增主键,在业务中创建实体类也一般不赋值.int不赋值的情况下值为0,执行到数据库中id就为0,而Integer在不赋值的情况下为null,一般id为自增主键,数据更新到数据库中可 ...

最新文章

  1. webstorm打包rn项目_React 之 项目搭建
  2. 中科视拓开源SeetaFace2
  3. mysql索引列是锁表还是锁行_[转]关于MYSQL Innodb 锁行还是锁表
  4. aspx隐藏前台控件div_c# – 代码隐藏页面无法“查看”aspx页面中声明的任何项目/控件...
  5. 我的偶像:Garfield 上映
  6. 2020 的最后 1 天,写个年终总结吧!
  7. Pano2VR制作热区激活面板
  8. FFmpeg-Python 给视频添加文字
  9. 苹果cms vod.html,苹果cms
  10. 脑语言2500令v0.5.5
  11. Mars3D开发教程学习步骤(不定时更新
  12. MATLAB自带分类模型APP——classification learner的使用
  13. 《决胜B端》读书笔记04:互联网领域常见产品方向、盈利模式、盈利模式对产品方向的诉求
  14. 前端面试官常问的问题有哪些?(前端面试题总结)
  15. 【C++】STL容器之string使用(赋值、拼接、查找、替换、比较、截取、插入、删除、子串)
  16. matlab可以仿真特殊电机,基于Matlab的异步电动机矢量控制系统的仿真研究
  17. android 如何获得附近的wifi,Android细节:扫描获取附近wifi,并以列表形式进行展示...
  18. iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
  19. Echarts分时图绘制
  20. linux格式化硬盘文件恢复,Linux格式化后数据恢复

热门文章

  1. JAVA学习day07 1
  2. 设置导航栏的相关属性
  3. MairDB 修改表(三)
  4. 微信小应用资源汇总整理
  5. Android绑定服务后出现空指针异常问题
  6. P06: 分组的背包问题
  7. Java设计模式11:Facade
  8. Web前端——CSS层叠样式表
  9. gnome boxes_如何使用GNOME Boxes的快照功能
  10. taz文件_我们将赠送LulzBot Taz 6 3D打印机