问题的本质是:扩展的Where方法有四个参数重载.传进去Func<T,true>那么返回值是IEnumable的接口类型的集合,如果是Expression<Func<T,true>>那么返回的是IQueryable类型的接口集合. 而IQueryable接口类型的集合是支持延迟加载和自动根据条件生成sql的. 在使用Entity Framework 访问数据库时,我们经常使用Lambda表达式,但是如果不小心的话,很容易就掉到坑里了.比如下面的例子:用Lambda访问M…
在使用Entity Framework 访问数据库时,我们经常使用Lambda表达式,但是如果不小心的话,很容易就掉到坑里了.比如下面的例子:用Lambda访问MSSqlServer中的NewsInfo表中id小于20的记录. 代码如下: 运行程序,程序工作正常.打开SQL Server Profiler 跟踪EF生成的SQL语句,结果如下: 这正是我们想要的SQL语句.下面我们将程序改一下,把Lambda表达式以参数的形式传递给一个方法GetNewsList(Func<NewsInfo, bo…
在.Net开发中,Entity framework是微软ORM架构的最佳官方工具.我们可以使用Lambda表达式在Entity framework中DbSet<T>类上直接做查询(比如使用DbSet<T>类的Where.First.Count等查询函数)返回数据库结果实体. 不知道大家有没有注意到DbSet<T>类上的很多查询函数都有两种类型的重载,就拿Where这个查询函数举例: 一种是传入Func<Tsource, bool>委托作为参数 public…
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. POCO Entity (Plain Old CLR Object): POCO类是不依赖任何框架的类型,如同其他正常的一般类型,我们称之为"Plain Old CLR Objects"(这里不知道怎么翻译,普通的CLR对象?古老的CLR对象?大概意思就是没有什么特殊的对象吧). POC…
Lazy<T>在Entity Framework中的性能优化实践(附源码) 2013-10-27 18:12 by JustRun, 328 阅读, 4 评论, 收藏, 编辑 在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问.只有当你使用到导航属性的时候,才会访问数据库.但是这个只是对于单个实体而言,而不适用于显示列表数据的情况. 这篇文章介绍的是,使用Lazy<T>来提高显示列表页面的效率. 这里是相关的源代码 PerformanceTest.…
1. Concurrency的作用 场景 有个修改用户的页面功能,我们有一条数据User, ID是1的这个User的年龄是20, 性别是female(数据库中的原始数据) 正确的该User的年龄是25, 性别是male 这个时候A发现User的年龄不对, 就给改成25, 那么在Entity Framework中,我们会这样做. ); //B用户在这里完成修改了User的性别 user.age = ; dbContext.SaveChanges(); 但是加入在上面注释处,有个B用户发现性别不对,…
        在Entity Framework中有三种加载的方式,分别是延迟加载,自动加载和显示加载.下面用一个例子来说明:现在有两个表,一个是资料表(Reference),另外一个表是资料分类表(Catalog).一个资料属于某一个分类,但是一个分类下可以包含多个资料.是一个一对多的关系.        两个实体类代码如下: public partial class Catalog { public Catalog() { this.References = new List<Refere…
关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法,欢迎一起探讨! 1.单个实体对象在进行改删时出现Attached报错,解决方案,请参见: http://www.cnblogs.com/zuowj/p/4523075.html http://www.cnblogs.com/scy251147/p/3688844.html 原理:清除context…
之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个实体,指的是要更新或删除的实体不包含其它实体(比如导航属性就包含其它实体),也就是简单POCO对象:但如果不是呢?那么那篇文章里的方法在一定程度上不起作用了,仍会报错,我开始也想不明白,明明通过IsAttached函数判断要更新的实体并未Attached,但进行Attaching时但仍然报错说有相同Key,开…
本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm的项目,页面上会有巨型ViewState,这必然不好.我自己博客用的是一个存储过程做的分页,用到现在都挺好,没有任何效率问题.后来想到,既然项目里有Entity Framework,那为什么不利用EF完成分页呢- 稍做研究之后发现,EF分页其实很简单.不过一样写文章了,光贴代码是不负责的,还是得稍微…