方法' ExecuteAsync'没有实施。 EF6 with .NET 4.6.1

时间:2016-12-19 13:48:49

标签: c# .net entity-framework

我有一个带有EF 6和.NET 4.6.1的C#项目。 当我尝试在Enable-Migrations中执行Update-DatabasePackage Manager Console时,收到以下错误:

  

System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.TypeInitializationException:' System.Data.Entity.SqlServer.SqlProviderServices'的类型初始值设定项。抛出一个例外。 ---> System.TypeLoadException:Method' ExecuteAsync'在类型' System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy'来自assembly' EntityFramework.SqlServer,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'没有实施。

在几个地方搜索,几乎问题是:

  

您的EF版本和项目版本不相等。您的实体框架是.Net 4的第6版,但您的项目使用.net 4.5项目.net版本4.5必须使用EF for .Net4.5

但我的项目是使用.NET 4.6.1,我相信EF也在使用。

这是我的packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.1.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net461" />
  <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net461" />
  <package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net461" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net461" />
  <package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
  <package id="Owin" version="1.0" targetFramework="net461" />
</packages>

我已尝试重新安装所有软件包(Update-Package -Reinstall)并删除所有nuget软件包并手动重新安装

1 个答案:

答案 0 :(得分:0)

我尝试清理NuGET缓存,删除整个.vs子文件夹,重新安装每个软件包,但没有一个工作。

然后,我在另一个文件夹上启动了一个新项目,并将旧项目中的每个项目复制到新项目(.config,.csproj和.sln文件除外)。 然后,当我构建项目并执行Enable-MigrationsUpdate-Database时,一切正常。

这对我有用,不是最好的解决方案,但有效!