EF 基础(第八章: 持久化方案)

Entity Framework 中的持久化

使用 Entity Framework 持久化(保存)一个实体到数据库有两种方案:连接方案(Connected Scenario)和断开方案(Disconnected Scenario)。

连接方案:

在连接方案中,上下文类(继承自 DbContext)的同一个实例用来对数据库查询和保存实体。它在声明周期中保持对所有实体的跟踪。当数据库在本地或者同一个网络上时,在窗体应用程序中,这种方法很管用。
这里写图片描述
优点:

  • 执行快
  • 上下文保持对所有实体的跟踪,并且当实体发生改变时,上下文自动设置它的状态。

缺点:

  • 上下文保持活动状态,所有数据库连接保持打开。
  • 使用更多资源

断开方案:

在断开方案中,对数据库查询和保存实体使用不同的上下文实例。一个上下文实例检索数据后会被处理掉,并且一个新的实例被创建用来保存实体到数据库。
这里写图片描述
断开方案复杂是因为一个上下文的实例不跟踪实体,所以你必须在调用SaveChanges()前给每个实体设置合适的状态。在上面的图表中,程序使用 Context 1 检索实体图表,并且使用 Context 2 执行一些 CUD (Create, Update, Delete)操作。在这种方案中 Context 2 不知道对实体图表作了哪些操作。

这在网络程序或者带远程数据库的程序中很管用。

优点:

  • 相比连接方案使用更少的资源
  • 没有打开的数据库连接

缺点:

  • 保存之前要为每一个实体设置合适的状态
  • 比连接方案执行慢
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值