我较新,有关在C#中使用Code First。
在项目中启用迁移并启动网站后,出现错误消息:
Method 'ExecuteAsync' in type 'System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy' from assembly 'EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' does not have an implementation.
我已经定义了上下文类,如下所示。
namespace MyOA.Migration.Contexts
{
public class OADBContext : DbContext
{
public OADBContext() { }
}
}
并且我尝试如下在Global.asax中创建数据库。
protected void Application_Start()
{
// Forces initialization of database on model changes.
using (var context = new Migration.Contexts.OADBContext())
{
context.Database.Initialize(force: true);
}
}
我试图搜索原因,但一无所知。
有什么建议么?
提前致谢。
最佳答案
如果检查两个组件的.NET版本:
您将看到EntityFramework.SqlServer具有v4.0 .NET依赖性,但是EntityFramework使用v4.5。这是问题的根源。我使用dotpeek工具检查程序集版本(there are other options from stack overflow to check .net vestion of an assembly)。
注意:实际上,当您使用jetBrains反射器工具反编译EntityFramework.SqlServer.dll时,您会发现没有ExecuteAsync方法。
解决此问题的方法是使用nuget.exe(从Visual Studio或独立的nuget可执行文件:please find "latest nuget.exe")。并从命令行运行它:
cd "[path to your nuget.exe]"
nuget Install EntityFramework
一组EF 6组件将被下载。使用.net v4.5文件夹中的EntityFramework和EntityFramework.SqlServer。
关于c# - 类型 'ExecuteAsync'中的方法 'System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy'没有实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24967208/