Ø  简介

本文主要记录 EF(Entity Framework) 在平时的开发中可能遇到的异常,以及应该如何去解决。

1.   System.InvalidOperationException

1)   异常描述:无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882

2)   异常解释:这个异常有可能是因为我们运行程序目录中不存在 EntityFramework.SqlServer.dll,而 EF 对数据库的操作需要依赖该程序集,但是在我们引用的“数据访问层”类库中并没有使用到 EntityFramework.SqlServer.dll,所以并不会输出到运行程序目录。

3)   解决办法(2种方法):

1.   直接在运行程序项目中引用 EntityFramework.SqlServer.dll,但是这种方法比较繁琐,因为每个引用了“数据访问层”的运行项目中都必须这样去引用(比较麻烦或容易忘记)。

2.   【推荐】在“数据访问层”的项目中实现对 EntityFramework.SqlServer.dll 的直接依赖,这样每个引用了“数据访问层”的项目都会输出该程序集,例如在 EF 数据上下文中添加如下代码:

static MyTestingContext()

{

//使得 EntityFramework.SqlServer.dll 能够输出到运行程序目录中

if (typeof(System.Data.Entity.SqlServer.SqlFunctions) == typeof(object)) { }

}

2.   System.Data.ProviderIncompatibleException 或 System.Data.Entity.Core.ProviderIncompatibleException

1)   异常描述:这个异常让我折腾了老半天,硬是下午都没找到原因!网上有人说是数据库连接配置有问题,但是这是公司项目数据库连接基本不变,怎么就有问题了!而且 EF 这块的代码也没怎么改,就莫名奇妙冒出这个异常了,记得当时有个异常信息:EF 提供程序未返回 ProviderManifestToken 字符串。

2)   解决办法:无论我各种改就是不行,后来尝试重启下 VS 后来居然可以了。所以总结下,当无法找到异常问题时,可以尝试重启 VS 或者电脑,搞不好是开发环境或开发工具出了问题。当然这个问题肯定还是某程序出问题了,可能重启 VS 刚好能解决这个问题吧。

3.   System.NotSupportedException

1)   异常描述:LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayLength”。这个异常可能是因为以下语法导致,举例:

int[] ccIds = RepositoryHelper.GetLastCateringCategoryIds(cateringTypeId, cateringCategorys);

var dataList = (from t1 in DataContext.CateringCategorys

where (ccIds.Length == 0 || ccIds.Contains(t1.CategoryId))

select t1).ToList();

2)   解决办法:这是因为在 LINQ to Entities 中不支持数组的 Length 属性,但是支持 List.Count 属性和方法,将集合 ccIds 改为 List<int> 类型即可。

4.   数据提交异常

1)   异常描述:

1.   System.Data.Entity.Core.EntityException:An error occurred while starting a transaction on the provider connection. See the inner exception for details.

2.   System.Data.SqlClient.SqlException:不允许启动新事务,因为有其他线程正在该会话中运行。

2)   解决办法:通常情况下可能是因为 dbContext.SaveChanges(); 代码再循环中执行导致,将该方法的调用放在循环外面即可。具体原因未知!

Entity Framework 6.0 常见异常及解决办法的更多相关文章

  1. Android 常见异常及解决办法

    Ø  前言 本文主要记录 Android 的常见异常及解决办法,以备以后遇到相同问题时可以快速解决. 1.   java.lang.NullPointerException: Attempt to i ...

  2. IIS 常见异常及解决办法

    Ø  简介 IIS 是我们平常接触比较多的服务端软件,用于站点发布等,本文主要记录 IIS 常见的异常及解决办法.主要包括: 1.   Visual Studio 启动 Web 项目提示"无 ...

  3. visual studio 2010 C#编程时 没有.NET framework 2.0目标框架的解决办法

    解决办法是安装Framework .NET 3.5 Sp1 因为visual studio 2010是依赖.NET Framework 3.5 Sp1来识别其它版本的.NEt framework的. ...

  4. LINQ to SQL 的常见异常及解决办法

    Ø  简介 本文主要介绍 LINQ to SQL 中常见的异常,以及对应的解决办法.包括以下内容: 1.   左连接情况下,右表非空类型字段可能抛出异常 1.   左连接情况下,右表非空类型字段可能抛 ...

  5. elasticsearch常见异常及解决办法

    报错信息:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 20602552 ...

  6. Python开发 常见异常和解决办法

    1.sqlalchemy创建外键关系报错property of that name exists on mapper SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对 ...

  7. windows phone SDK 8.0 模拟器异常 0x89721800解决办法

    删除 APPDATA\LOCAL\Microsoft\Phone Tools\CoreCon\10.0 从新启动即可!

  8. Entity FrameWork Code First无法生成数据库 解决办法

    我是控制台应用程序,没有connectionStrings,试了几个方法也都不可以. 这是别人的博客用其他方法. http://www.cnblogs.com/Gyoung/archive/2013/ ...

  9. java web 常见异常及解决办法

    javax.servlet.ServletException: javax/servlet/jsp/SkipPageException 重启tomcat, javax.servlet.ServletE ...

随机推荐

  1. ftp文件共享服务详解

     ftp 文件共享服务,文件的上传下载 跨平台,tcp协议 21号(命令端口) 20号(数据端口,主动模式) 默认情况 ftp服务运行被动模式 vsftpd:软件 非常安全的rpm -qi vsftp ...

  2. Vue--的src文件

    1.assest: 图片等等...... 2.components: 组件 3.App.vue: 根组件,三个部分:模板.行为(处理逻辑).样式: 模板: 只能有一个根标签: <HelloWor ...

  3. Flask Mysql数据库连接

    下载库: pip install flask-sqlalchemy 下载后进入终端使用python后import导入模块测试没有报错就说明成功了 py文件: # -*- encoding: utf-8 ...

  4. php项目核心业务(增、删、改、查)(第三篇)

    对增删改查数据库的封装 //php对数据库的封装 //Mysql_fetach($sql)函数查询所有的 function Mysql_fetach($sql){ $conn=mysqli_conne ...

  5. go操作redis和mysql示例

    一:redis示例 使用redis的包是: github.com/garyburd/redigo/redis 1:编写第一个示例: 链接,设置,获取 redis_basic.go package ma ...

  6. opencv源码学习: getStructuringElement函数;

    getStructuringElement函数归属于形态学,可以建立指定大小.形状的结构: 原型: /** @brief Returns a structuring element of the sp ...

  7. Django REST Framework extensions

    GitHub:https://github.com/chibisov/drf-extensions 官方文档:http://chibisov.github.io/drf-extensions/docs ...

  8. MySQL数据库优化_limit_1

    转自:https://blog.csdn.net/cbjcry/article/details/70155118 1. MySQL中,在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMI ...

  9. Kafka各个版本差异汇总

    Kafka各个版本差异汇总   从0.8.x,0.9.x,0.10.0.x,0.10.1.x,0.10.2.x,0.11.0.x,1.0.x或1.1.x升级到2.0.0 Kafka 2.0.0引入了线 ...

  10. java io系列05之 ObjectInputStream 和 ObjectOutputStream

    本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...