Entity Framework 6 可以在 .NET Standard 项目中使用吗?

Posted

技术标签:

【中文标题】Entity Framework 6 可以在 .NET Standard 项目中使用吗?【英文标题】:Can Entity Framework 6 be used in a .NET Standard project? 【发布时间】:2020-02-11 08:02:10 【问题描述】:

如果不是,会是吗?如果有,什么时候?

我还没有找到任何明确的官方信息,而我在 Stack Overflow 上能找到的有限信息是一两年前的事了。

我能够找到官方信息说 EF 6.3 将能够在 .NET Core 项目中使用,但我找不到它的发布日期,我也不确定在 .NET Core 项目中使用的含义是什么。 NET 标准项目。

【问题讨论】:

【参考方案1】:

.NET Standard 项目不可执行。

EF 6 支持 .NET Standard 2.1,当前受 .NET Core 3.0 或更高版本支持 - 没有 .NET Framework 版本。 EF 6 还支持 .NET 4.0 和 4.5 或更高版本。

https://github.com/aspnet/EntityFramework6/blob/release/6.4/src/EntityFramework/EntityFramework.csproj#L6

【讨论】:

Entity Framework 6(最新版本 6.4.4)是否支持 .NET Standard 2.0? @petrosmm 不,它没有。这就是 .NET Standard 2.1。 EF6 不支持 .NET Standard 2.0。 哇,我对 Fuget 的印象是它支持 2.0,但根据下面的@Ogglas,你是对的。【参考方案2】:

一些澄清,因为 EntityFramework 6.3.0 .NET Standard 2.1 已被支持。但是没有支持.NET Standard 2.1.NET Framework 版本。来自微软的评论:

NET Framework 不支持 .NET Standard 2.1 或更高版本。为了 更多详情请看.NET Standard 2.1的公告。

这意味着大多数使用EntityFramework 6.X 的应用程序无论如何都无法使用.NET Standard 2.1 项目。

https://docs.microsoft.com/en-us/dotnet/standard/net-standard

https://www.nuget.org/packages/EntityFramework/#

【讨论】:

建议使用 ef 6 构建您的库,以 .net 4 和 .net 标准为目标,这样它就可以支持在 .net 4 和 .net 核心上运行 @TWilly 你能扩展一下吗? 嗯,这对 .NET Framework 中的用户来说非常具有误导性,他们会看到“EF6 现在在 6.3 中支持 .NET Core”。当然,它支持 .NET Core,但是通过折腾 .NET Framework 之类的失败了(是的,我知道它对 .NET 核心仍然有用,但应该很清楚它不支持 .NET 框架)

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

Entity Framework 5/6 中的可更新视图

Entity Framework 6 0.1 到 0.1 与 fluent api 的关系

entity framework 6 添加实体必须用设计器拖吗

Entity Framework 6 使用正在更新的数据更新所有记录

Entity Framework Core 6.0 预览4 性能改进

在Oracle中使用Entity Framework 6 CodeFirst