gpt4 book ai didi

.net - 使用 ASP.Net Core 2 Web 应用程序使用 EF6 调用 Full 库

转载 作者:行者123 更新时间:2023-12-02 00:41:03 24 4
gpt4 key购买 nike

我正在尝试从新的 Asp Net Core 2.0 Web 应用程序调用 .Net 4.7 数据访问库(使用 Entity Framework 6)。

问题是 EF6 似乎无法获取 DbProviderFactory。我的工作理论是,这应该在调用程序的 app/web.config 中提供。我收到的错误是:

System.TypeLoadException: 'Could not load type 'System.Data.Common.DbProviderFactories' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.'

为了避免这个问题,我创建了一个 DbConfiguration 类:

public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
SetProviderFactory("System.Data.SqlClient", System.Data.SqlClient.SqlClientFactory.Instance);
SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance);

}
}

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyDbContext : DbContext, IMyDbContext
{
public MyDbContext(string connectionString)
: base(connectionString)
{


}

断点显示它正确执行了 MyDbConfiguration,但仍然抛出错误。我已在 .Net Core Web 应用程序上安装了 System.Data.SqlClient 和 System.Data.Common 包。

我还没有发现任何明确说明我想要做的事情(一般来说)是不可能的,所以我正在假设我的 DBConfiguration 实现有问题。请有人指出我正确的方向吗?

最佳答案

如果您想使用 .Net Core 应用程序中的 Entity Framework 库,您应该针对 .Net Framework 重新定位应用程序。这是 official source 的引用:

To use Entity Framework 6, your project has to compile against .NET Framework, as Entity Framework 6 doesn't support .NET Core. If you need cross-platform features you will need to upgrade to Entity Framework Core.

如果您检查使用 EF6 库的 .Net .Core 项目示例(linked 来自同一文档)(正是您的情况),您将看到它的目标是 .Net Framework,而不是 .Net Core:

<TargetFramework>net452</TargetFramework>

进行此类重定向时,您不会丢失当前正在使用的任何 .Net Core 功能。您仍然可以在 .Net Core 中使用我们喜欢的所有美味的东西。但是,您将应用程序启动的平台限制为仅限 .Net Framework。不幸的是,当前无法解决此限制,因为它是由于 Entity Framework 仅针对 .Net Framework 实现的事实造成的。您的选择是转向 Entity Framework Core 或等到 Entity Framework will become the part .Net 标准。

总之,要解决当前问题,请更改 .Net Core csproj 文件中的以下行:

<TargetFramework>netcoreapp2.0</TargetFramework>

<TargetFramework>net47</TargetFramework>

关于.net - 使用 ASP.Net Core 2 Web 应用程序使用 EF6 调用 Full 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174795/

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