首页 > 代码库 > EntityFramewrok 使用
EntityFramewrok 使用
1.使用一些查询比较复杂或者需要拼接的查询的时候最好一直保持IQueryable。一直到最后取数据的时候才进行查询。例如分页之类的条件拼接。
var query = dbset.Where(expression); query = IsDESC ? query.OrderByDescending(orderByExpression) : query.OrderBy(orderByExpression); PageData<T> pageData = http://www.mamicode.com/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();
EntityFramewrok 使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。