EF4.4 升级EF6.0问题总结

如出现下面代码错误,基本可能确定EF数据库配置错误

1 在 System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver) 在 System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver) 在 System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver) 在 System.Data.Entity.Core.Metadata.Edm.MetadataCache.SplitPaths(String paths) 在 System.Data.Entity.Core.Common.Utils.Memoizer`2.<>c__DisplayClass2.b__0() 在 System.Data.Entity.Core.Common.Utils.Memoizer`2.Result.GetValue() 在 System.Data.Entity.Core.Common.Utils.Memoizer`2.Evaluate(TArg arg) 在 System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetArtifactLoader(DbConnectionOptions effectiveConnectionOptions) 在 System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetMetadataWorkspace(DbConnectionOptions effectiveConnectionOptions) 在 System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace() 在 System.Data.Entity.Core.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection() 在 System.Data.Entity.Core.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor, ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, Translator translator, ColumnMapFactory columnMapFactory) 在 System.Data.Entity.Internal.InternalConnection.CreateObjectContextFromConnectionModel() 在 System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel() 在 System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 在 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 在 System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 在 System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 在 System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 在 System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate) 在 ExclusiveRecommended.RecommendedJob.Execute(IJobExecutionContext context)

错误日志

<add name="SF_LCEntities" connectionString="metadata=res://*/SFBOS.csdl|res://*/SFBOS.ssdl|res://*/SFBOS.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.1.18\Dev;initial catalog=xxx;user id=xxxx;password=xxx;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

将上面红色部分替换成   .edmx 文件名

事务写法的差异

 1             using (var db = new SFBOSEntities())
 2             {
 3                 db.Connection.Open();
 4                 using (var ts = db.Connection.BeginTransaction())
 5                 {
 6                     try
 7                     {
 8
 9                     }
10                     catch (Exception ex)
11                     {
12                         ts.Rollback();
13                     }
14                     finally
15                     {
16                         db.Connection.Close();
17                     }

旧版本事务写法

 1             using (var db = new SFLCEntities())
 2             {
 3                 db.Database.Connection.Open();
 4
 5                 using (var ts = db.Database.Connection.BeginTransaction())
 6                 {
 7                     try
 8                     {
 9                         db.Database.UseTransaction(ts);
10
11                     }
12                     catch (Exception ex)
13                     {
14                         ts.Rollback();
15
16                     }
17                     finally
18                     {
19                         db.Database.Connection.Close();
20                     }
21                 }
22             }

新版本事务写法

如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化

出现此错误请看新版本事务中有多出一行代码  db.Database.UseTransaction(ts);  加上这句问题解决

时间: 2024-09-30 00:27:46

EF4.4 升级EF6.0问题总结的相关文章

使用EF6.0出现:CS0029 无法将类型“System.Data.Entity.Core.Objects.ObjectContext”隐式转换为“System.Data.Objects.ObjectContext”错误

这是因为EF6.0重构了一些命名空间后,和VS原有的实体数据模型模板不一致了(ObjectContext context = ((IObjectContextAdapter)dataContext).ObjectContext;),只要把命名空间改一下就可以了,如下: 把using System.Data.Objects;改成using System.Data.Entity.Core.Objects;即可.

Centos 6.6 升级openSSH 远程访问版本(5.3升级7.0源码安装版)

由于服务器Openssh 版本过低,存在不安全因素,所以最近想把服务器都进行升级: 查看当前系统版本为6.6,openssh为5.3版本,此版本启用默认是开启了root远程功能的,因此我能直接通过ROOT进行远程访问. 话不多说,直接上传下载的OPENSSL7.0版本压缩包,需要的可以到http://www.openssh.com官网下载 上传后解压,tar zxf openssh-7.0p1.ta.gz ,然后进cd openssh-7.01p1 目录. ./configure --prefi

Android Studio升级到0.8.1后怎样设置字体大小?

升级到0.8.1后.打开设置字体大小页面.你会发现无论是Default还是Darcula,都不同意你改变字体的大小.事实上这个是由于这两个模式是Android Studio自带模式,所以不同意你修改,你要改的话要自己定义自己的模式.例如以下图: 选中一个你想要的样式,然后点击Save as,然后在弹出的对话框中输入你自定义的样式的名称. 然后再把Scheme name选择成你自己定义的样式,这个时候就能够改了.

windows 2008 r2 x64 离线升级PowerShell3.0 及打开WinRM模块

windows 2008 r2 x64  离线升级PowerShell3.0 及打开WinRM模块 bat脚本 echo off set apath=%~dp0 :: 如果运行提示找不到文件apath 写完整路径 echo "install net4.0" %apath%\dotNetFx45_Full_x86_x64.exe  /quiet /norestart start /w pkgmgr /iu:PowerShell echo y|powershell set-executio

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是翔通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基本不用了.还有最主要的原因就是锻炼下自己的能力.好了其他就不多说了,下面来看下我对这个项目的整体概述吧: 目录: 目录我以后会在这边添加上去的 一.Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理 基本设计 项目中使用到的工具: Visual Studio 2013,

Android Studio升级到0.8.1后如何设置字体大小?

升级到0.8.1后,打开设置字体大小页面,你会发现不管是Default还是Darcula,都不允许你改变字体的大小,其实这个是因为这两个模式是Android Studio自带模式,所以不允许你改动,你要改的话要自定义自己的模式.如下图: 选中一个你想要的样式,然后点击Save as,然后在弹出的对话框中输入你自己定义的样式的名称. 然后再把Scheme name选择成你自定义的样式,这个时候就可以改了. Android Studio升级到0.8.1后如何设置字体大小?,布布扣,bubuko.co

EF6.0+APS.NET MVC5.0项目初探二(类库引用关系及说明)

接着上一篇(EF6.0+APS.NET MVC5.0项目初探一(界面展示),说说我搭建项目的一点心得. 第一步:我喜欢先建一个空的解决方案,只是个人喜好,不喜勿喷,呵呵. 如图: 第二步:添加项目所需要的类库: 如图: 第三步:添加类库引用 UI.Manage->BusinessLogic.BLL,Domain.Entity,Domain.ViewModel,Infrastructure.Common,UI.HtmlHelper BusinessLogic.BLL->Domain.Entity

EF6.0批量插入

EF6.0批量插入有多种方式,可以使用EntityFramework.Extensions,提供的有BulkInsert. /// <summary> /// 批量插入 /// </summary> /// <param name="entityList"></param> public bool BulkInsert(List<T> entityList) { try { db.BulkInsert(entityList);

EF6.0+APS.NET MVC5.0项目初探四(填充各个程序集)

第一步:每次生成数据库是都需要修改的地方 在Domain.DbContext中添加 在Infrastructure.Ioc.DALFactory中添加 第二步:DataAccess.DAL说明: 我们先在此添加一个基类 1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Entity; 5 using System.Data.Entity.Infrastructu