在 ASP.NET Core 中使用 Entity Framework 6

Posted

技术标签:

【中文标题】在 ASP.NET Core 中使用 Entity Framework 6【英文标题】:Using Entity Framework 6 in ASP.NET Core 【发布时间】:2017-09-30 11:59:32 【问题描述】:

假设我有:

用于 .NET Core 框架的 ASP.NET Core 独立 Web API 项目 带有用于完整 .NET 框架的 EF6 数据模型的类库

ASP.NET Core 项目引用类库

这里提出的这个架构:

https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6

问题是:我的独立应用程序是否能够在发布(或发布)后在指定的目标平台(Win、Linux、Mac 运行时)上执行,如果它的依赖目标是完整的 .NET Framework?

非常感谢

【问题讨论】:

您不能在 .NET Core 应用程序中使用 .NET >=4.5 库。您必须以 .NET Framework >=4.5 为目标。话虽如此,不,您不能在 linux 或 macOS 上本地运行它。当您在 macos/linux 上的 mono 上运行它时,您虽然可以使用大部分功能,但这是另一回事。如果您需要 EF6 的所有功能,或者 EFCore 中实现的功能是否适合您的用例,请三思 【参考方案1】:

这是不可能的。您提供的同一链接确认:

要使用 Entity Framework 6,您的项目必须针对 .NET Framework 进行编译,因为 Entity Framework 6 不支持 .NET Core。如果您需要跨平台功能,则需要升级到 Entity Framework Core。

您可以在 .NET Framework(不是 .NET CORE)和 EF6(但不能跨平台)上使用 ASP.NET Core。但不是 .NET Core 上的 ASP.NET Core 并使用 EF6。您需要为该项目使用 EF Core。

【讨论】:

这不再是真的。从 EF6.3 起,支持 .net core(3)。【参考方案2】:

免责声明:我是项目的所有者Entity Framework Classic

正如@Adailson 回答的那样,直接实体框架是不可能的

但是,可以通过 EF Classic:http://entityframework-classic.net/

这是一个也支持 .NET Core 的 EF6 分支。我们计划集成大量功能和错误修复。

提供社区版(免费)和企业版(付费)。

什么是 EF Classic

Entity Framework Classic 是来自最新 EF6 代码库的受支持版本。它支持 .NET Framework 和 .NET Core,并通过添加大量必备的内置功能克服了一些 EF 限制。

【讨论】:

以上是关于在 ASP.NET Core 中使用 Entity Framework 6的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 和 Entity Framework Core:Linq 中的左(外)连接

如何为 ASP.net Core 配置 Entity Framework 6

C# ASP.NET Core Entity Framework Core 异步 ToQueryable 比较

如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?

这是如何使用 Entity Framework Core 和 ASP.NET Core MVC 2.2+ 和 3.0 创建数据传输对象 (DTO)

ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.