我有一个带有EF 6和.NET 4.6.1的C#项目。
当我尝试在Enable-Migrations
中执行Update-Database
或Package 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软件包并手动重新安装
答案 0 :(得分:0)
我尝试清理NuGET缓存,删除整个.vs子文件夹,重新安装每个软件包,但没有一个工作。
然后,我在另一个文件夹上启动了一个新项目,并将旧项目中的每个项目复制到新项目(.config,.csproj和.sln文件除外)。
然后,当我构建项目并执行Enable-Migrations
和Update-Database
时,一切正常。
这对我有用,不是最好的解决方案,但有效!