生成视图时EntityFramwork Power Tools出错

时间:2016-01-15 11:18:35

标签: entity-framework visual-studio asp.net-identity ef-power-tools

当尝试使用EntityFramework Power Tools(0.9 beta)的Generate Views函数时,生成失败,我在“输出”窗口中收到以下错误:

System.Reflection.TargetInvocationException: 
Exception has been thrown by    the target of an invocation. --->
System.TypeLoadException: Could not load type 
'System.ComponentModel.DataAnnotations.Schema.IndexAttribute' from assembly 
'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
at MyProject.Entities.Models.MyDbContext.OnModelCreating(DbModelBuilder modelBuilder)

我的上下文继承自IdentityDbContext,当电动工具尝试为Identity模型生成视图时,这似乎会导致此问题。

只有在尝试生成视图时才会发生这种情况。解决方案本身可以构建并运行,没有任何错误。

为了简化和隔离这个问题,我在vs 2013中创建了一个新的网站项目,其中包含身份和实体框架6.0,并且这一代工作正常。将软件包更新到Identity 2.2.1和EntityFramework 6.1.3会导致错误,并且生成失败。

我已经检查了项目引用,看起来引用了正确的Entityframework版本。

我的.csproj引用:

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer">
  <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core">
  <HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.EntityFramework">
  <HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
</Reference>

好像Power工具坚持使用6.0版本还没有System.ComponentModel.DataAnnotations.Schema.IndexAttribute类型,因为它只在6.1版本中引入,但它被添加到最新的Identity模型中以限制唯一的UserName

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来,Power工具使用的是EntityFramework的Visual Studio IDE版本,而不是项目中引用的版本。在我的情况下,它是6.0.2。在我的机器上安装Visual Studio 2013 Update 5 (2013.5) RTM解决了这个问题,现在使用了最新的EntityFramework 6.1.3。