EF中的持久性场景

使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景。

1.在线场景

在线场景中,context是同一个上下文实例(从DbContext派生),检索和保存实体都通过同一个context上下文,因此在线场景中的持久化十分简单。

这种方案适用于连接本地数据库或同一网络上的数据库。

优点:

执行速度快。
上下文跟踪所有实体,并在实体发生更改时自动设置适当的状态。

缺点:

上下文保持在线状态,因此与数据库的连接保持打开状态。
利用更多资源。

2.离线场景

离线场景中,使用不同上下文实例进行检索和保存。一个context检索实体后被释放,创建一个新的实体进行保存工作。

离线场景的保存相对复杂,因为新创建的context没有跟踪实体,因此必须在保存实体之前为每个实体设置适当的状态。在上图中,应用程序使用Context 1检索实体图,执行一些CUD(创建,更新,删除)操作。使用Context2保存时,Context2不知道在这个实体图上执行过哪些操作。

离线场景适用于Web应用程序或远程数据库。

优点:

与在线方案相比,使用更少的资源。
没有与数据库的长连接。
缺点:

需要在保存之前为每个实体设置适当的状态。
执行速度比在线方案慢。

EF系列目录链接:Entity Franmework系列教程汇总

Entity Framework入门教程(5)---EF中的持久化场景的更多相关文章

  1. Entity Framework入门教程(3)---EF中的上下文简介

    1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实 ...

  2. Entity Framework入门教程(4)---EF中的实体关系

    这一节将总结EF是怎么管理实体之间的关系.EF与数据库一样支持三种关系类型:①一对一 ,②一对多,③多对多. 下边是一个SchoolDB数据库的实体数据模型,图中包含所有的实体和各个实体间的关系.通过 ...

  3. Entity Framework入门教程(13)---EF中的高并发

    EF中的高并发 这里只介绍EF6中database-first开发方案的高并发解决方案,code-first开发方案中的高并发会在以后的EF CodeFirst系列中介绍. EF默认支持乐观并发:我们 ...

  4. Entity Framework入门教程(19)---EF中使用事务

    EF中使用事务 这节介绍EF6中事务的使用.EF core中事务的使用方式和EF6中一模一样. 1.EF中的默认的事务 默认情况下,当我们执行一个SaveChanges()方法时就会新建了一个事务,然 ...

  5. Entity Framework入门教程(7)--- EF中的查询方法

    这里主要介绍两种查询方法 Linq to entity(L2E)和Sql 1.L2E查询 L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,( ...

  6. Entity Framework入门教程(2)---EF工作流程

    EF工作流程 1.EF基本CRUD流程 下边的图就可以很清晰地展示EF的CRUD操作的基本工作流程: 这里做一个EF CRUD操作的简单总结:1.定义模型:这是EF工作的前提,定义模型包括定义领域类( ...

  7. Entity Framework入门教程(6)--- 在线场景中保存数据

    在线场景中保存数据 在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改. 下图说明了在线场景中的CUD(创建,更新,删除)操作 ...

  8. Entity Framework入门教程(11)---EF6中的异步查询和异步保存

    EF6中的异步查询和异步保存 在.NET4.5中介绍了异步操作,异步操作在EF中也很有用,在EF6中我们可以使用DbContext的实例进行异步查询和异步保存. 1.异步查询 下边是一个通过L2E语法 ...

  9. Entity Framework入门教程(12)--- EF进行批量添加/删除

    EF6添加了批量添加/删除实体集合的方法,我们可以使用DbSet.AddRange()方法将实体集合添加到上下文,同时实体集合中的每一个实体的状态都标记为Added,在执行SaveChange()方法 ...

随机推荐

  1. GCD多线程的一个全面的题目

    GCD多线程的一个全面的题目  

  2. ueditor富文本编辑器使用百度地图自定义动态地图组件及兼容https及http协议

    ueditor富文本编辑器默认支持百度地图组件,但是如果导入动态地图后会加很多默认的地图组件在上面.如果需要自定义动态地图的组件则需要修改ueditor特定的html. ueditor百度地图组件所在 ...

  3. SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器

    INSTEAD OF触发器工作原理 INSTEAD OF表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,即当对表进行INSERT.UPDATE 或 DELE ...

  4. Python简单的多线程demo:装逼写法

    用面向对象来写多线程: import threading class MyThread(threading.Thread): def __init__(self, n): super(MyThread ...

  5. .NET CORE学习笔记系列(4)——ASP.NET CORE 程序启用SSL

    一.什么是SSL? 1.概念: SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数 ...

  6. python项目在无外网的生产环境解决沙盒依赖问题

    参考 https://yq.aliyun.com/articles/159599 https://www.jianshu.com/p/08c657bd34f1 缺点是 只能针对python的环境 做沙 ...

  7. 性能测试中的最佳用户数、最大用户数、TPS、响应时间、吞吐量和吞吞吐率

    一:最佳用户数.最大用户数 转:http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html 二:  事务.TPS 1:事务:就是用户某一步 ...

  8. 第三章 启动rabbitmq的webUI

    一.启动步骤 1.启动rabbitmq rabbitmq-server (前台启动)或者rabbitmq-server -detached(后台启动) 2.启动rabbitmq_management ...

  9. 在 CentOS 7 中安装 MySQL 8

    准备 本文环境信息: 软件 版本 CentOS CentOS 7.4 MySQL 8.0.x 安装前先更新系统所有包 sudo yum update 安装 1. 添加 Yum 包 wget https ...

  10. 关于IOC容器的一些个人理解

    一丶前言 下面是本人对于IOC容器的一些个人理解,希望能帮到初学者认识IOC,如有理解得不对的地方欢迎指正,也让我学学. 二丶IOC是什么,它是干嘛的? IOC只是一种编程思想,不局限于任何一种语言, ...