无法加载类型'System.ComponentModel.DataAnnotations.Schema.IndexAttribute'

时间:2014-05-12 10:45:50

标签: c# entity-framework data-annotations dbcontext

我有这个错误。 Could not load type 'System.ComponentModel.DataAnnotations.Schema.IndexAttribute' ERROR

ApplicationDbContext是自动生成的DbContext,用于帐户部分。每当我尝试使用任何帐户控制器操作时,都会发生此错误。     错误源自

  public AccountController()
            : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
        {
        }

我有自己的DbContext,可以正常工作并获取所有必需的数据。

参考文献很好。我该如何解决这个问题。

更新 我为AspNet.Identity使用了一些更新的Refrence。它引起了这个问题吗?

更新2 当我混合两个成员资格提供程序版本时发生此错误。我首先使用MVC 5提供的默认值,然后尝试使用MVC 3成员资格,然后又回到MVC 5.然后这个错误开始弹出。

我还没有找到解决这个问题的方法。 但是作为解决方法,我重新创建了项目以及以前的所有文件,并且它有效。

3 个答案:

答案 0 :(得分:10)

编辑您的.csproj文件,并使用正确的Entity Framework版本路径替换<HintPath>值(目前,最新的稳定版本为6.1.2):

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>

验证路径是否存在;如果没有,请为您想要的版本安装Nuget包。

要清楚,这些是您要编辑的<HintPath>元素,以确保拥有当前版本:

<HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.dll</HintPath>

<HintPath>..\packages\EntityFramework.6.1.2\lib\net45\EntityFramework.dll</HintPath>

将这些设置保留为主要版本6.0.0.0:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">

<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">

答案 1 :(得分:1)

我在测试项目中遇到了类似的错误,两个项目都引用了实体框架6.0.0.0。我能够通过在测试项目中再次删除和添加对实体框架的引用来解决它。

答案 2 :(得分:1)

我遇到了同样的问题,我试图修改我的.csproj文件并替换<HintPath>,就像Chris Schiffhauer上面显示的一样,但是问题没有解决。最终,我发现GAC中的实体框架dll是旧版本(6.0.0.0),将其删除后再没有问题。

您可以在这里轻松找到它C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL