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。
延迟查询,可以叠加多次查询条件,一次性提交到数据库,按需获取数据。