EntityFramework6学习总结4(上下文、延迟查询)

dbContext是一个上下文环境,里面内置对象跟踪,会开启数据库链接。

 

实例1:

  public static void Show()
        {
            using (NewsDbContext dbContext = new NewsDbContext())
            {
                //打印sql信息
                dbContext.Database.Log += c => Console.WriteLine($"sql:{c}");

                News news = new News()
                {
                    NewsClassifyId = 3,
                    Title = "621",
                    Image = null,
                    Contents = "621测试信息",
                    PublishDate = DateTime.Now,
                    Remark = "621备注"
                };

                dbContext.News.Add(news);

                News news1 = dbContext.News.FirstOrDefault(n => n.Id == 2);
                news1.Title += "1";

                News news2 = dbContext.News.FirstOrDefault(n => n.Id == 6);
                news2.Title += "2";

                News news3 = dbContext.Set<News>().Find(50);
                dbContext.News.Remove(news3);

                dbContext.SaveChanges();
            }
        }

上面代码中包含对数据的新增,修改,删除操作。

dbContext.SaveChanges(); 多个数据修改,一次SaveChanges,开启事物,任何一个失败,整个事物回滚。

 

实例2:

public static void Show()
        {
            using (NewsDbContext dbContext = new NewsDbContext())
            {
                //打印sql信息
                dbContext.Database.Log += c => Console.WriteLine($"sql:{c}");

                var list = dbContext.Set<News>().Where(n => n.Id > 10);
                list = list.OrderBy(n => n.Id);
                //到这里为止,不会去数据库执行sql

                //开始遍历数据时才去数据库查询
                foreach (var item in list)
                {
                    Console.WriteLine(item.Title);
                }
            }
        }

在写LINQ查询语句时,并不会去数据库执行sql,而是当数据开始遍历时才会去数据库执行sql。

延迟查询,可以叠加多次查询条件,一次性提交到数据库,按需获取数据。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值