免费建立个人网站申请,小程序外包公司太坑了,17网站一起做网店好不好,网站开发需求分析怎么写众所周知在EF 6 及以前的版本中#xff0c;是支持懒加载#xff08;Lazy Loading#xff09;的#xff0c;可惜在EF Core 并不支持#xff0c;必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持#xff08;目前还未发布是支持懒加载Lazy Loading的可惜在EF Core 并不支持必须使用Include方法来支持导航属性的数据加载。不过现在EF Core的开发团队打算恢复对这一功能的支持目前还未发布不过可以在Github上面下载进行测试。懒加载懒加载也可以叫做按需加载、延迟加载。可以分两方面来理解一方面指暂时不需要该数据不用在当前马上加载而可以推迟到使用它时再加载另一方面指不确定是否将会需要该数据所以暂时请不要加载待确定需要后再加载它。懒加载是一种很重要的数据访问特性可以有效地减少与数据源的交互注意这里所提的交互不是指交互次数而是指交互的数据量从而提升程序性能。EF 6 懒加载我们先来看一看在EF 6中的懒加载的使用方式。实体定义 public class Order{ public int OrderID { get; set; } public string CustomerID { get; set; } public DateTime? OrderDate { get; set; } public virtual ICollectionOrderDetail OrderDetails { get; set; }} public class OrderDetail{ public int OrderID { get; set; } public int ProductID { get; set; } public decimal UnitPrice { get; set; } public short Quantity { get; set; } public float Discount { get; set; } public virtual Order Order { get; set; }}我们在这里定义订单、订单明细实体它们是一对多关系通过OrderId字段进行关联。 using (NorthwindContext context new NorthwindContext()) {Order order await context.Orders.SingleAsync(item item.OrderID 10253);Assert.NotNull(order);Assert.NotNull(order.OrderDetails);Assert.Equal(3, order.OrderDetails.Count);}}在查询订单号为 10253 的订单后如果我们需要访问订单的明细不需要再编写一次数据查询的代码直接访问导航属性即可EF会自动帮我们填充属性的值。懒加载需要注意以下两点在配置中启用了懒加载默认开启;实体类不能是封闭sealed类导航属性必须是虚virtual属性。在 EF Core 中启用懒加载目前EF Core发布的最新版本中并不支持懒加载开发人员必须使用Include方法才能完成导航属性的加载。 using (NorthwindContext context new NorthwindContext()) {Order order await context.Orders.Include(e e.OrderDetails).SingleAsync(item item.OrderID 10253);Assert.NotNull(order);Assert.NotNull(order.OrderDetails);Assert.Equal(3, order.OrderDetails.Count);}大家需要在Github上面下载最新的源代码来测试这一功能 aspnet/EntityFrameworkCore。启用懒加载 public class NorthwindContext : DbContext{ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var sqlConnectionStringBuilder new SqlConnectionStringBuilder {DataSource ****,InitialCatalog Northwind,UserID sa,Password sa};optionsBuilder.UseSqlServer(sqlConnectionStringBuilder.ConnectionString);optionsBuilder.UseLazyLoadingProxies(); base.OnConfiguring(optionsBuilder);}}要在通常的应用程序中使用只需在DbContext的OnConfiguring方法中添加对UseLazyLoadingProxies()扩展方法调用即可。框架目前是通过Castle.Core框架来生成代理类来实现对导航属性的延迟加载开发团队打算将该功能做为EF Core的可选安装包。如果您对该功能感兴趣可以在Github上面下载源代码进行测试。原文地址:https://www.cnblogs.com/tdfblog/p/entity-framework-lazy-loading.html .NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com