42、C#:EF框架的:导航属性,加载记录追踪方式(MergeOption),添加内存内容到新上下文(Attach)

EF很强大,知道一些用法可以很便利地开发。

1.导航属性 --- 主/子表操作

比如apply为父表(主键作为子表的外键(之一)),progress作为子表,那么apply.progress.add(new progress{ ...,....})的方式就是使用apply对象来对子表进行新增操作。这种新增操作无需添加子表的外键(也就是apply的主键),会默认添加,且与子表的主键是否是此外键无关。

注:apply为表对应的变量,并不是表本身名称,progress也是如此。


2.MergeOption --- 设置从数据库加载记录对象后对这些记录对象的追踪方式

context.windopenapplies.MergeOption = MergeOption.NoTracking是将从数据库中捞取的记录对象加载到内存后,对这些记录对象不再追踪,相当于对这些记录对象关闭了数据库,这样可以提升性能,当然,这种做法仅限于查询。如果有增删改,就不能这样,会造成context.savechange()的时候无法更新到数据库中,增删改的时候不用写这句话,直接使用默认设置MergeOption.AppendOnly即可。

注:此枚举dll:System.Data.Entity.dll


3.Attach --- 将非当前上下文内存内容加载到当前上下文中

context.windopenapplies.Attach(apply)是将apply添加到context.windopenapplies的表结构管理中。其中,apply为从数据库中加载到内存中的记录对象,但是却跟当前的context.windopenapplies不在同一个上下文,可以看做独立与数据库之外的记录对象;context.windopenapplies为当前上下文context中的某一个表结构。如果要将独立与当前上下文之外的记录对象添加到数据库,必须首先通过context.windopenapplies.Attach(apply)的方式加载进来,否则后面的context.savechange不会产生任何作用。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值