Linq之include

  入园很长时间了,每次都想写点什么,但也没抽出时间,一直都是在默默的关注大牛们的博客。

  为什么那么多单身的程序员?因为程序员在编程的过程中总是会碰到一个问题,找不到对象,呵呵。

  Linq中include的用法你是否了解呢?曾经查阅过msdn,发现上面讲的自己不是很明白,但是经过项目这一实现总算彻底清楚了。

  现在项目有这样一个功能,就是先将数据查询出来,然后将查询出来的数据导成excel。系统采用的是entityframework框架,数据访问层用的是linq,

于是我这样写查询的底层方法:

var res = from b in dataContext.B
                             where ((string.IsNullOrEmpty(txtname) || b.Name.ToUpper().Contains(txtname.ToUpper())) 再加上一些其他的查询条件,很快写完了,自我感觉很不错,于是测试一下,但是在测试的过程中发现有一个问题,查询的时候没有错,但是填充excel时出现这样一个错:“The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.”(查询和填充excel都是同一个数据源,都是调的一个底层方法)。很多人可能会感到奇怪了,同样是一个底层方法,为什么查询不出错,填充excel的时候不出错呢?这时include就起作用的了.我们知道inlcude的作用是“返回其关联实体”,但是很多时候却不知道返回来的关联实体有什么用,关联实体又是什么。前面已经说了,数据访问层用linq实现,那么回到系统架构的DomainEntities 模型中, 查看查询表的结构,可以找到相应的实体。这时加上关联的实体

var res= from b in dataContext.B.include("BA").include("BC").include("BA.D")
                             where ((string.IsNullOrEmpty(txtname) || b.Name.ToUpper().Contains(txtname.ToUpper()))再加上一个其他的查询条件,这是在测试一下,发现程序运行正常。

  其中“BA”和“BC”是b的关联实体,可以在DomainEntities找到,但是include("BA.D")呢,这是通过B的关联实体BA去访问D表,然后再执行填充excel。

  第一次写博客,希望大家勿喷。谢谢!

  

转载于:https://www.cnblogs.com/huayizeng/archive/2012/04/09/2438661.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值