zoukankan      html  css  js  c++  java
  • 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.18Dev;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);  加上这句问题解决

  • 相关阅读:
    一篇文章教会你在Windows和Linux系统下搭建Nginx
    【红日安全-VulnStack】ATT&CK实战系列——红队实战(二)
    绕过WAF进行常见Web漏洞利用
    Mac mysql 5.7.x 设置服务开机自启动
    Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file
    阿里云Centos7 安装mysql5.7 报错:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    Python 反序列化漏洞学习笔记
    Jmeter二次开发——基于Java请求
    环境篇:Atlas2.1.0兼容CDH6.3.2部署
    synchronized 是王的后宫总管,线程是王妃
  • 原文地址:https://www.cnblogs.com/lonny/p/EntityFramework_UpgradeSummary.html
Copyright © 2011-2022 走看看