当前位置: 首页 > news >正文

seo案例网站建设哪家好网页制作网站图片

seo案例网站建设哪家好,网页制作网站图片,做起点说网站的服务器多少钱,建设网站需要几部分Lazy Loading#xff1a;延迟加载。Eager Loading#xff1a;贪婪加载。 首先通过一个简单的控制台应用程序例子说明延迟加载#xff1a; 订单主表和订单从表#xff0c;并且订单主表和订单从表是一对多的关系#xff0c;代码如下图所示#xff1a; //订单主表public cl…  Lazy Loading延迟加载。Eager Loading贪婪加载。 首先通过一个简单的控制台应用程序例子说明延迟加载 订单主表和订单从表并且订单主表和订单从表是一对多的关系代码如下图所示 //订单主表public class Order{public int Id { get; set; }public DateTime OrderDate { get; set; }//导航属性public virtual ListOrderDetail OrderDetail { get; set; }} //订单从表public class OrderDetail{public int Id { get; set; }public string ProductName { get; set; }public int Quantity { get; set; }public int Price { get; set; }public int XOrderId { get; set; }//导航属性public virtual Order Order { get; set; }} Fluent API 代码如下 public class kTStoreModel : DbContext{public kTStoreModel(): base(namekTStoreModel){}protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Conventions.RemovePluralizingTableNameConvention();modelBuilder.EntityOrderDetail().HasRequired(od od.Order).WithMany(o o.OrderDetail).HasForeignKey(x x.XOrderId);}public virtual DbSetOrder Order { get; set; }public virtual DbSetOrderDetail OrderDetail { get; set; }} 运行程序建立表结构后在数据表中插入一些测试数据并修改Main函数方法如下图所示 static void Main(string[] args) {using (kTStoreModel db new kTStoreModel()){foreach (Order order in db.Order){Console.WriteLine(订单编号:{0},订单时间{1}, order.Id, order.OrderDate);foreach (OrderDetail detail in order.OrderDetail){Console.WriteLine(\t名称{0}数量{1}价格{2},detail.ProductName,detail.Quantity,detail.Price);}}Console.ReadKey();} } 再次运行程序结果如下图所示 上述例子演示了一个简单的查询功能 接下去修改Main函数中的代码如下图所示 using (kTStoreModel db new kTStoreModel()) {db.Database.Log Console.Write;var cs db.Order;Console.WriteLine(\n\n开始执行SQL》》\n\n);Order order cs.First();Console.WriteLine(\n\n开始执行导航属性 》》\n\n);ListOrderDetail details order.OrderDetail; } Console.ReadKey(); 运行程序执行结果如下图所示  可以看到生成了两条SQL第一条SQL是查询Order数据表的第二条SQL是查询OrderDetail表的。载入完整的关联数据容易造成应用程序的执行瓶颈。因此EntityFramework通过所谓的Lazy Loading避免一次载入过多的的数据内容第一层循环并未触及OrderDetail相关的数据只有到第二层循环时才会载入。 使用Eager Loading 如果想采用Eager Loading预先知道加载的所有数据包含导航属性关联的内容DbSet中的Include方法支持这种加载机制修改Main函数中的方法如下图所示 using (kTStoreModel db new kTStoreModel()){db.Database.Log Console.Write;Console.WriteLine(\n\n开始执行SQL》》\n\n);var cs db.Order.Include(OrderDetail).Select(x x).ToList();Console.WriteLine(\n\n开始执行导航属性 》》\n\n);var details cs.First().OrderDetail;}Console.ReadKey(); 运行结果如下 从上图中可以看到程序一次性加载了所有的数据在执行导航属性的阶段不用再去执行另外的SQL语句了。 调整Virual属性  由于EF默认为延迟加载因此在没有额外设置情况下都是将导航属性设置为vriual如此一来当明确读取这个关联属性时户籍自动将相关数据逐一取出。如下图代码所示的情况会执行两段SQL using (kTStoreModel db new kTStoreModel()) {Order order db.Order.First();Console.WriteLine(订单编号:{0},订单时间{1}, order.Id, order.OrderDate);foreach (OrderDetail detail in order.OrderDetail){Console.WriteLine(\t名称{0}数量{1}价格{2}, detail.ProductName, detail.Quantity, detail.Price);}Console.ReadKey(); } 如果删除Order实体类中的导航属性的Virual声明将不会生成第二段查询OrderDetail的SQLforeach循环将会报错。 强制调用Include方法可以让我们在一开始就取出所有的数据但是我只需要特定数据对象时这就会有性能浪费的问题。这种情况下如果想要自行取出关联的数据可以进一步调用Load方法调整代码如下图所示 using (kTStoreModel db new kTStoreModel()) {db.Database.Log Console.Write;Order order db.Order.First();db.Entry(order).Collection(c c.OrderDetail).Load();Console.WriteLine(订单编号:{0},订单时间{1}, order.Id, order.OrderDate);foreach (OrderDetail detail in order.OrderDetail){Console.WriteLine(\t名称{0}数量{1}价格{2}, detail.ProductName, detail.Quantity, detail.Price);}Console.ReadKey(); } 运行效果下图所示 LazyLoadingEnable属性 除了修改实体类定义以外比较弹性的做法是通过配置来达到相同的效果。通过配置以下代码关闭了Lazy Loading操作因此不会再自动加入关联的数据。 using (kTStoreModel db new kTStoreModel()) {db.Configuration.LazyLoadingEnabled false;//关闭延迟加载// etc..... } Include方法与对象加载 可以通过Include完整的载入导航属性的关联数据对于更复杂的关联数据可以串联Include方法加载更完整的数据。 假设存在如下几个实体类 public class Order {public int Id {get;set;}public DateTime OrderDate {get;set;}public int CustomerId{get;set;}//导航属性public virual ICollectionOrderDetail OrderDetails {get;set;}public virual Customer Customer{get;set;} }public class OrderDetail {public int Id{get;set;}public int OrderId {get;set;}public int ProductId{get;set;}public int Quantity {get;set;}public int Price{get;set;}//导航属性public virtual Order Order{get;set;}public virtual Product Product{get;set;} }public class Product {public int Id{get;set;}public string Name {get;set;}public int Price {get;set;}//导航属性public virtual ICollectionOrderDetail OrderDetails{get;set;} }public class Customer {public int Id {get;set;}public string ContactName{get;set;}public string Phone{get;set;}public string Email{get;set;}//导航属性public virual ICollectionOrder Orders {gets;set;} } 如果需要以客户数据为主体按顺序输出此客户的所有订单数据以及每一笔订单的商品明细与对应的价格可以参考如下程序 static void Main(string[] args) {using(var context new KTStoreModel()){context.Database.Log Console.Write;var customer context.Customers;foreach(var c in customer){Consolem.WriteLine(\tOrder_Id:{0},o.Id);foreach(var o in c.Orders){Console.WriteLine(\tOrder_Id:{0},o.Id);foreach (var od in o.OrderDetail){Console.WriteLine(\t\tProduct_Id:{0}\tPrice:{1},od.ProductId,od.Price);}}Console.Read();}} } 不考虑性能问题以上的程序代码即可完成关联数据的列举并以嵌套结构输出。但是每次嵌套循环会产生大量SQL这还不是一个好的选择。修改程度代码如下图所示 using(var context new KTStoreModel()){context.Database.Log Console.Write;var customer context.Customers.Include(Orders.OrderDetails).Include(Orders.OrderDetails.Product);foreach(var c in customer){Consolem.WriteLine(\tOrder_Id:{0},o.Id);foreach(var o in c.Orders){Console.WriteLine(\tOrder_Id:{0},o.Id);foreach (var od in o.OrderDetail){Console.WriteLine(\t\tProduct_Id:{0}\tPrice:{1},od.ProductId,od.Price);}}Console.Read();}} 更进一步使用Where筛选数据可以进一步避免返回不需要的数据如下图所示 var customer context.Customers.Include(Orders.OrderDetails).Include(Orders.OrderDetails.Product).Where(c c.Id 5)
http://www.zqtcl.cn/news/459152/

相关文章:

  • 北京建设网官方网站外贸wordpress收款插件
  • 网站关键词进前三响应式手机网站模版
  • 网站采集来源制作好网站
  • 哪个网站有工笔教程免费物流公司网站模板
  • 网站怎么做才有收录西安建设工程信息网人员查询
  • 用dedecms做的网站电子商务公司名称大全简单大气
  • 网站建设的业务员wordpress font awesome
  • 艺术公司网站定制中心怎么搜索网站搜索量
  • 陕西网站建设设计公司西部数码网站管理助手破解版
  • 网站建设框架构建正规的app网站开发
  • 离退休工作网站建设方案wordpress在线浏览pdf
  • 昆明免费网站制作wordpress自定义路由
  • html5视频网站开发江西响应式网站制作
  • 网站照片加水印家装公司十大口碑排名
  • 做网站还有用PHP网站开发如何建立vip
  • 东莞广告公司东莞网站建设辽宁城乡建设部网站
  • 公司网站开发详细流程php网站开发优点
  • 广东网站建设多少钱比较大气的网站
  • asp.net怎么做登录网站网站建设服务网络服务
  • 网站备案级别做公司网站要多少钱
  • 湛江网站seo网站定制排名
  • 为什么网站之有首页被收录企业网站发布图片文章
  • 做网站要准备内蒙做网站
  • 邯郸市搞网站服务务的吗网站建设怎么在图片上加字
  • 卡片风格网站我想做跑腿网站怎么做
  • 公司网站建设前期情况说明如何找厂家地址
  • 超值的郑州网站建设wordpress 移除 新闻
  • 长春网络营销网站徐州手机模板建站
  • 微网站开发+在线商城建设局招标网站
  • 网站开发的基本过程关岭做网站