Ø  简介

本文主要记录 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. px转换成bp单位的工具函数

    import {Dimensions} from 'react-native' //当前屏幕的高度 const deviceH = Dimensions.get('window').height // ...

  2. react-native中的state

    我们使用两种数据来控制一个组件:props和state.props是在父组件中指定, 而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state. 假如我们需要制 ...

  3. Day24--Python--常用模块03--正则表达式

    正则表达式是对字符串操作的⼀种逻辑公式. 我们⼀般使⽤正则表达式对字符串进⾏匹配和过滤. 使⽤正则的优缺点: 优点: 灵活, 功能性强, 逻辑性强. 缺点: 上⼿难. ⼀旦上⼿, 会爱上这个东⻄ ⼯具 ...

  4. 一个小误区 JS中的contains

    在Java语言中,contains可以用于判断str1是否包含str2 原生JS中是有contains方法的 但它并不是字符串方法,,仅用于判断DOM元素的包含关系,参数是Element类型 若要在J ...

  5. 查看android源码,windows环境下载源码

    查看源码 参考: http://blog.csdn.net/janronehoo/article/details/8560304 步骤: 添加chrome插件 Android SDK Search 进 ...

  6. HTML学习笔记Day16

    一.CSS 3D 1.什么是3d的场景呢? 2d场景,在屏幕上水平和垂直的交叉线x轴和y轴 3d场景,在垂直于屏幕的方法,相对于2d多出个z轴 Z轴:靠近屏幕的方向是正向,远离屏幕的方向是反向 2.C ...

  7. ngnix FastCGI解析漏洞

    漏洞描述: Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME.当访问http://192.168.1.103/phpin ...

  8. 2019年 十款Mac上必备的实用软件列表

    2019年 十款Mac上必备的实用软件列表 文章来源:风云社区 (www.scoee.com 两千多款Mac软件下载) 1.Parallels Desktop 如果你还是想在Mac上使用Windows ...

  9. windows server 2008 远程连接

    1.win2008如何开启远程桌面 原文:https://zhidao.baidu.com/question/745350052927250652.html 正常的开启操作: 在桌面上右点" ...

  10. mac/Linux源码安装TensorFlow

    因为用pip命令直接下载安装会链接到google,导致打不开,比如使用pip install tensorflow碰到如下的问题.因此在本文中,主要介绍了如何通过源码进行TensorFlow的安装 $ ...