EF.Method not found: 'System.Data.Entity.Core.Metadata.Edm.EdmModel System.Data.Entity.Infrastructure.DbModel.get_StoreModel() 方法未找到:"System.Data.Entity.Core.Metadata.Edm.EdmModel System.Data.Entity.Infrastructure.DbModel.get_StoreModel()

问题描述 投票:1回答:2

我有一个共享自定义 "代码优先 "DbContext对象的解决方案。

由于今天在一个项目中,在尝试以这种方式访问实体后。

 using(var cx = new MyContext())
 {
    var data = cx.Persons;
 }

我得到了以下Exception。

    {"Method not found: 'System.Data.Entity.Core.Metadata.Edm.EdmModel System.Data.Entity.Infrastructure.DbModel.get_StoreModel()'."}
        [System.MissingMethodException]: {"Method not found: 'System.Data.Entity.Core.Metadata.Edm.EdmModel System.Data.Entity.Infrastructure.DbModel.get_StoreModel()'."}
        Data: {System.Collections.ListDictionaryInternal}
        HelpLink: null
        HResult: -2146233069
        InnerException: null
        Message: "Method not found: 'System.Data.Entity.Core.Metadata.Edm.EdmModel System.Data.Entity.Infrastructure.DbModel.get_StoreModel()'."
        Source: "CodeFirstStoreFunctions"
        StackTrace: "   at CodeFirstStoreFunctions.FunctionsConvention.Apply(EntityContainer item, DbModel model)\r\n   
atSystem.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.Dispatch[T](T item)\r\n   
at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.VisitEdmEntityContainer(EntityContainer item)\r\n   
at System.Data.Entity.Edm.EdmModelVisitor.VisitCollection[T](IEnumerable`1 collection, Action`1 visitMethod)\r\n   at System.Data.Entity.Edm.EdmModelVisitor.VisitEntityContainers(IEnumerable`1 entityContainers)\r\n   at System.Data.Entity.Edm.EdmModelVisitor.VisitEdmModel(EdmModel item)\r\n   at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.VisitEdmModel(EdmModel item)\r\n   
at System.Data.Entity.ModelConfiguration.Configuration.ConventionsConfiguration.ModelConventionDispatcher.Dispatch()\r\n   at System.Data.Entity.ModelConfiguration.Configuration.Conven
    tionsConfiguration.ApplyStoreModel(DbModel model)\r\n   
at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)\r\n   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)\r\n   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)\r\n   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)\r\n   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()\r\n   at System.Data.Entity.Internal.InternalContext.Initialize()\r\n   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)\r\n   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()\r\n   at System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()\r\n   at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()\r\n   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n   at ... }

这很奇怪,因为在其他项目中,自定义上下文工作正常。

我尝试了什么?

  • 清理和重建
  • 比较连接字符串

这条信息是什么意思?

感谢任何帮助。

c# entity-framework
2个回答
5
投票

在我的案例中,这个错误是由混合了实体框架包引起的。'项目A'使用的是实体框架的6.1.3版本。'Project B'是'Project A'的测试项目,使用的是6.0.0版本。

当我的测试执行时,这就造成了上述的错误信息。

在两个项目中升级到6.1.3后,错误就消失了。


0
投票

我有同样的问题,我得到解决,通过

  1. 从GAC MSIL中删除EntityFramework.dll。
  2. 刷新数据模型(在删除entityframework.dll之前,不允许我从dmx中添加删除表)。
  3. 使用命令gacutil -i entityframework.dll在GAC文件中添加entityFramework.dll。
  4. 洁净解决方案
  5. 构建解决方案

PS: 确保所有的实体框架.dll版本是相同的(项目-GAC文件),并且应用程序配置包含连接字符串

© www.soinside.com 2019 - 2024. All rights reserved.