System.MissingMethodException 从 EF 6.0 Beta 升级到 RC 后

本文关键字:RC Beta MissingMethodException EF System | 更新日期: 2023-09-27 18:31:47

这是什么意思?

System.MissingMethodException 未由用户代码
处理 HResult=-2146233069 消息=找不到方法: 'System.Data.Entity.ModelConfiguration.Configuration.PrimitivePropertyConfiguration System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration 1.Property(System.Linq.Expressions.Expression 12<!0,!!0>>)'。 Source=Att.Uds.DataLayerMappings StackTrace: at att.Uds.DataLayerMappings.ItemTypeItemConfiguration..ctor() at Att.Uds.DataLayerMappings.UdsContext.OnModelCreateating(DbModelBuilder 模型生成器)在 c:''TFS''ATS-MSDev''UDS''Dev''Code''Att.Uds.DataLayerMappings''UdsContext.cs:line 163 at System.Data.Entity.DbContext.CallOnModelCreateating(DbModelBuilder 模型生成器) at System.Data.Entity.Internal.LazyInternalContext.CreateModelBuilder() at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext 内部上下文) at System.Data.Entity.Internal.RetryLazy2.GetValue(TInput input) InnerException:

此类上发生错误:

namespace Contoso.Fabrikam.DataLayerMappings
{ 
  public abstract class NamedEntityConfiguration<TEntity> : EntityBaseConfiguration<TEntity> where TEntity : NamedEntity
  {
    public ConfigurationColumn NameColumn;
    protected new int LastOrdinalPosition
    {
      get
      {
        return (NameColumn.Ordinal);
      }
    }
    public NamedEntityConfiguration() <=== EXCEPTION HERE
    {
      NameColumn = new ConfigurationColumn() { Ordinal = base.LastOrdinalPosition+1, Name = "Name", IsRequired = true, Length = 128 };
      this.Property(t => t.Name)
        .HasColumnName(NameColumn.Name)
        .HasColumnOrder(NameColumn.Ordinal)
        .HasMaxLength(NameColumn.Length);
      if(NameColumn.IsRequired)
      {
        this.Property(t => t.Name).IsRequired();
      }
    }
  }
}

谢谢

System.MissingMethodException 从 EF 6.0 Beta 升级到 RC 后

@Saber他的答案之所以有效,是因为当您将项目升级到更高的 .NET 版本时,项目文件不会自动升级。例如,如果从 .NET 4.0 升级到 .NET 4.5 并编辑项目文件,则可能会看到以下内容:

<Reference Include="EntityFramework">
      <HintPath>..'packages'EntityFramework.6.1.3'lib'net40'EntityFramework.dll</HintPath>
    </Reference>
    <Reference Include="EntityFramework.SqlServer">
      <HintPath>..'packages'EntityFramework.6.1.3'lib'net40'EntityFramework.SqlServer.dll</HintPath>
    </Reference>

您必须更改对 net45 而不是 net40 的引用。删除包时,这将产生相同的行为。

我遇到了同样的错误。它对我有用:

  1. 管理器控制台中的卸载包实体框架
  2. 从"包"文件夹中删除实体框架文件夹
  3. 管理器控制台中的安装包实体框架

就我而言,我不得不从此文件夹中删除 EntityFramework.dll:

C:''Windows''Microsoft.NET''assembly''GAC_MSIL''EntityFramework