加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0372zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

你必须知道的EF知识和经验

发布时间:2016-10-28 18:30:10 所属栏目:教程 来源:站长网
导读:副标题#e# 注意:以下内容如果没有特别申明,默认使用的EF6.0版本,codefirst模式。 推荐MiniProfiler插件 工欲善其事,必先利其器。 我们使用EF和在很大程度提高了开发速度,不过随之带来的是很多性能低下的写法和生成不太高效的sql。 虽然我们可以使用SQL

至于官方EF为什么没有提供这样的支持就不知道了。不过使用EntityFramework.Extended需要注意以下几点:

  1. 只支持sql server
  2. 批量修改、删除时不能实现事务(也就是出了异常不能回滚)
  3. 没有联级删除
  4. 不能同EF一起SaveChanges (详见)

http://www.cnblogs.com/GuZhenYin/p/5482288.html

在此纠正个问题EntityFramework.Extended并不是说不能回滚,感谢@GuZhenYin园友的指正(原谅我之前没有动手测试)。

注意:需要NuGet下载EntityFramework.Extended, 并导入命名空间: using EntityFramework.Extensions ;

测试代码如下:(如果注释掉手抛异常代码是可以直接更新到数据库的)

using (var ctxTransaction = db.Database.BeginTransaction())
{
    try
    {
        db.Teachers.Where(t => true).Update(t => new Teacher { Age = "1" });

        throw new Exception("手动抛出异常");

        ctxTransaction.Commit();//提交事务
    }
    catch (Exception)
    {
        ctxTransaction.Rollback();//回滚事务
    }
}

自定义IQueryable扩展方法

 最后整理下自定义的IQueryable的扩展。

 你必须知道的EF知识和经验

 

补充:

First和Single的区别:前者是TOP(1)后者是TOP(2),后者如果查询到了2条数据则抛出异常。所以在必要的时候使用Single也不会比First慢多少。

 

结束:

源码下载:http://pan.baidu.com/s/1o8MYozw

本文以同步至《C#基础知识巩固系列》

欢迎热心园友补充!

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!