EntityFramewrok 使用

1.使用一些查询比较复杂或者需要拼接的查询的时候最好一直保持IQueryable。一直到最后取数据的时候才进行查询。例如分页之类的条件拼接。

       var query = dbset.Where(expression);
            query = IsDESC ? query.OrderByDescending(orderByExpression) : query.OrderBy(orderByExpression);
            PageData<T> pageData = new PageData<T>();
            pageData.TotalCount = query.Count();
            pageData.DataList = query.Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList();

2.使用AsNoTracking可以让查询效率更高一些查询出来的东西不会放在缓存里进行追踪处理。

db.TestInfo.Where(e=> e.AName == "张三").AsNoTracking().ToList()

3.在查询后对外键关联处理比较多的情况下用Include进行预加载,效率会更高。

       var list = db.TestInfo.Where(e => e.AName.Contains("张")).Include("TestGroup").ToList();
            foreach (var item in list)
            {
                string groupName = item.TestGroup.GroupName;
            }

4.批量修改网上有个扩展库挺好用的。EntityFramework.Extended,它提供了批量删除,批量修改等功能。

批量更新:

var query = db.TestInfo.Where(e => e.AName == "2014");
query.Update(e => new TestInfo { AName = "1215" });

将TestInfo里所有AName等于2014的AName改成1215

批量删除:

db.TestInfo.Where(e=> e.AName=="2014").Delete();

5.批量添加网上也有个扩展库。EntityFramework.BulkInsert插入速度很快10000条数据,1秒就ok了,虽然ef提供了AddRange,但是需要40多秒钟等待。

       TestInfo testInfo;
            for (int i = 0; i < 10000; i++)
            {
                testInfo = new TestInfo();
                testInfo.ID = Guid.NewGuid();
                testInfo.AName = "2014";

                testInfo.GID = new Guid("D9B3DC41-C584-4BA7-8443-A2F71309740A");
                list.Add(testInfo);
            }
            db.BulkInsert(list);
            //db.TestInfo.AddRange(list);
            //db.SaveChanges();
时间: 2024-10-21 14:58:16

EntityFramewrok 使用的相关文章

EntityFramewrok Codefirst 数据库初始化

我们希望当程序运行时自动完成数据库的创建并预置初始值.自己的Context名为 DataBaseContet 有两种方法: 1.在Global.asax中添加  Database.SetInitializer<DataBaseContext>(new DatabaseInitializer()); 2.配置文件中添加 contexts 节点, 节点中指定类名与命名空间 <entityFramework> <contexts> <context type="

使用Nuget 安装指定版本package或者更新package到指定版本

最近在琢磨MVC和EntityFramework,使用的VS是2013版的,在Nuget的GUI界面下安装了EntityFramework(默认安装最新版的,怎么安装指定版本还没找到),按照MVC的示例项目MusicStore逐步做的过程中发现MVC4不支持EntityFramwok 6. 尝试去更新MVC版本各种失败,只能试着去降低EntityFramework版本.但是通过Nuget的GUI界面无法安装或更新到指定版本的EntityFramwok.在网上搜了搜相关资料(事实上也很容易搜到),

JavaScript笔记杂谈篇(啥都有)

二维码缩放比例以43PX的倍数缩放最为标准. NuGet相关管理http://www.cnblogs.com/dudu/archive/2011/07/15/nuget.html 学习笔记: http://kb.cnblogs.com/page/143190/ 动态创建标记,给标记添加样式,class,等等   vardtProductName=$("<dt></dt>",{style:"text-overflow: ellipsis;overflow

MVC - 17.OA项目

1.分层   2.项目依赖关系 MODEL IDAL -> MODEL DAL -> IDAL,MODEL,EntityFramewrok(注意和MODEL里的版本要一致),System.Data.Entity IBLL -> IDAL,MODEL BLL ->  IBLL,IDAL,MODEL,DI Controller -> IBLL,MODEL,DI Web -> Controller,MODEL   3.T4模版生成业务层和数据层接口 IDAL.tt IDAL.

EntityFramework版本下载和更新

安装指定版本的Package(例如:EntityFramework 5.0): PM> Install-Package EntityFramework -ProjectName MusicStore -Version 5.0 更新到指定版本的Package(例如EntityFramewrok 6.0): PM> Update-Package EntityFramework -ProjectName MusicStore -Version 6.0

分布式事务,EventBus 解决方案:CAP【中文文档】(转)

出处:http://www.cnblogs.com/savorboard/p/cap-document.html 前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下这篇文章. 本文档为 CAP 文献(Wiki),本文献同时提供中文和英文版本,英文版本目前还在翻译中,会放到Github Wiki 中. 目录 前言 1.Getting Started 1.1 介绍 1.2 应用场景 1.3 Quick St

EntityFramework 7 更名为EntityFramework Core(预发布状态)

前言 最近很少去学习和探索新的东西,尤其是之前一直比较关注的EF领域,本身不太懒,但是苦于环境比较影响自身的心情,所以迟迟没有下笔,但是不去学习感觉在精神层面缺少点什么,同时也有园友说EF又更新了,要我再写一篇,最终经过思想斗争后,还是花了一点时间去继续探索.本篇比较理论的去分享最近EF进展,后面有时间会继续关注EF团队在EF上的动向,并给出相对应的实例. EF Core 1.0.0 (1)EntityFramework是微软在.NET中推荐使用的数据访问技术,而EntityFramework