• 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);  加上这句问题解决

  • 相关阅读:
    python3的pygame的五子棋布局设置和代码详细分析
    RAID原理分析
    Python攻城狮教你用Pythin开机和关机,关机只需一条执行命令
    Python 之 MySql 每日一练 329——查询名字中含有风字的学生信息
    Python 之 MySql 每日一练 232——查询每门课程的平均成绩
    网络虚拟化基础协议·Geneve
    openstack octavia的实现与分析(一)openstack负载均衡的现状与发展以及lvs,Nginx,Haproxy三种负载均衡机制的基本架构和对比
    Linux下多网卡绑定bond及模式介绍
    Python调试器-pdb的使用
    ubuntu server安装的一些坑
  • 原文地址:https://www.cnblogs.com/lonny/p/EntityFramework_UpgradeSummary.html
Copyright © 2020-2023  润新知