Entity Framework 6.0 常见异常及解决办法
Ø 简介
本文主要记录 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 常见异常及解决办法的更多相关文章
- Android 常见异常及解决办法
Ø 前言 本文主要记录 Android 的常见异常及解决办法,以备以后遇到相同问题时可以快速解决. 1. java.lang.NullPointerException: Attempt to i ...
- IIS 常见异常及解决办法
Ø 简介 IIS 是我们平常接触比较多的服务端软件,用于站点发布等,本文主要记录 IIS 常见的异常及解决办法.主要包括: 1. Visual Studio 启动 Web 项目提示"无 ...
- visual studio 2010 C#编程时 没有.NET framework 2.0目标框架的解决办法
解决办法是安装Framework .NET 3.5 Sp1 因为visual studio 2010是依赖.NET Framework 3.5 Sp1来识别其它版本的.NEt framework的. ...
- LINQ to SQL 的常见异常及解决办法
Ø 简介 本文主要介绍 LINQ to SQL 中常见的异常,以及对应的解决办法.包括以下内容: 1. 左连接情况下,右表非空类型字段可能抛出异常 1. 左连接情况下,右表非空类型字段可能抛 ...
- elasticsearch常见异常及解决办法
报错信息:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 20602552 ...
- Python开发 常见异常和解决办法
1.sqlalchemy创建外键关系报错property of that name exists on mapper SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对 ...
- windows phone SDK 8.0 模拟器异常 0x89721800解决办法
删除 APPDATA\LOCAL\Microsoft\Phone Tools\CoreCon\10.0 从新启动即可!
- Entity FrameWork Code First无法生成数据库 解决办法
我是控制台应用程序,没有connectionStrings,试了几个方法也都不可以. 这是别人的博客用其他方法. http://www.cnblogs.com/Gyoung/archive/2013/ ...
- java web 常见异常及解决办法
javax.servlet.ServletException: javax/servlet/jsp/SkipPageException 重启tomcat, javax.servlet.ServletE ...
随机推荐
- [ZJOI2012]灾难(建图)
阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物的阿米巴告诉小强,草 ...
- Eureka
Consul vs. Eureka Eureka is a service discovery tool. The architecture is primarily client/server, w ...
- [NOI2017]游戏(2-SAT)
这是约半年前写的题解了,就搬过来吧 感觉这是NOI2017最水的一题(当然我还是不会2333),因为是一道裸的2-SAT.我就是看着这道题学的2-SAT 算法一:暴力枚举.对于abc二进制枚举,对于x ...
- 第五篇 - Selenium突破反爬获取qq邮件标题
from selenium import webdriver from selenium.webdriver import ActionChains #1.打开登陆页面 wd = webdriver. ...
- PHP的简单工厂模式
又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工厂模式中,可以根据参数的不同返回不同类的实例.简单工厂模式专门定义一个类来负责创建其他类的实例,被创建 ...
- hystrix实战
https://blog.csdn.net/Ezreal_King/article/details/72942823
- (贪心 优先队列)P1090合并果子 洛谷
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- ES6(promise)_解决回调地狱初体验
一.前言 通过这个例子对promise解决回调地狱问题有一个初步理解. 二.主要内容 1.回调地狱:如下图所示,一个回调函数里面嵌套一个回调函数,这样的代码可读性较低也比较恶心 2.下面用一个简单的例 ...
- google chrome 浏览器书签丢失问题
在一次新打开标签页时,电脑卡死,强制重启后打开google chrome 浏览器,发现历史什么的都在,但书签栏全部丢失了 找到 系统盘:\Users\用户名\AppData\Local\Google\ ...
- Linux系统诊断必备技能之一:lsof 用法详解!
lsof(list open files)是一个查看当前系统文件的工具.在linux环境下,任何事物都以文件的形式存在,用户通过文件不仅可以访问常规数据,还可以访问网络连接和硬件:如传输控制协议 (T ...