gpt4 book ai didi

c# - 类型 'ExecuteAsync' 中的方法 'System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy' 没有实现

转载 作者:太空狗 更新时间:2023-10-29 19:44:00 25 4
gpt4 key购买 nike

我对在 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 版本:

  • Entity Framework (v4.5)
  • EntityFramework.SqlServer (v4.0)

您会看到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com