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

9
我遇到了这个错误。 无法加载类型 'System.ComponentModel.DataAnnotations.Schema.IndexAttribute' 的错误 ApplicationDbContext是自动生成的DbContext,用于帐户部分。每当我尝试使用任何帐户控制器操作时,就会出现此错误。 该错误源于
  public AccountController()
            : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
        {
        }

我有自己的DbContext,它可以很好地获取所有所需数据。
引用是正确的。我该如何解决这个问题?
更新: 我在AspNet.Identity中使用了一些更新的引用。这是否导致了问题?
更新2: 当我混合使用两个Membership提供程序版本时,出现了此错误。我首先使用了默认的MVC 5提供程序,然后尝试使用MVC 3成员身份,然后再次回到MVC 5。然后这个错误开始弹出。
我仍然没有找到解决这个问题的方法。但是作为解决方法,我重新创建了项目并将所有之前的文件添加进去,然后它可以工作了。

嗨,你有没有针对上述问题的解决方法?我也遇到了同样的问题。 - Eldho
有解决方案吗?我也遇到了同样的问题。 - spadelives
我实际上使用相同的文件(模型,控制器,视图)重新创建了该项目,并且它可以正常工作。无法找到真正的解决方案 :/ - Ruchan
做了一些研究,发现这个:IndexAttribute是EF 6.1中包含的新功能之一。所以问题在于您引用了错误版本的EF(6.0)。 - Ruchan
也遇到了这个问题。我重新创建了项目,然后它就可以工作了。虽然有点费劲,但是我想一个人不应该太过于玩弄身份验证。 - user1752532
3个回答

11

编辑你的.csproj文件,并将<HintPath>的值替换为正确的Entity Framework版本路径(目前,最新稳定版本是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">

实际上,如果您正在使用最新的 EF 6,则为6.1.3。 - Edgar Froes
在Visual Studio(2015)菜单中:工具-> Nuget包管理器->管理解决方案的Nuget包...您可以获得概述。在我的情况下,在左侧面板中选择了Entity Framework,立即发现一个项目使用了旧版本的EF。这也是罪魁祸首。 - LosManos

2

我遇到了同样的问题,尝试修改.csproj文件并替换<HintPath>,就像Chris Schiffhauer上面所展示的那样,但问题并没有解决。最后,我发现我的GAC中的entity framework dll是旧版本(6.0.0.0),将其删除后,问题就解决了。

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


1

我在一个测试项目中遇到了类似的错误,两个项目都引用了Entity Framework 6.0.0.0。通过在测试项目中删除并重新添加对Entity Framework的引用,我成功解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接