Entity Framework 6 和 .NET Core 应用程序

3

我一直在阅读有关.NET Core和ASP.NET Core和Entity Framework 6的内容。

它指出:

在ASP.NET Core应用程序中使用Entity Framework 6的推荐方法是将EF6上下文和模型类放在针对完整框架的类库项目中。从ASP.NET Core项目中添加对类库的引用。

然而,当我实际操作以下步骤时:

  1. 创建基于.NET Core的控制台应用程序
  2. 创建基于.NET完整框架的类库。
  3. 在类库中,添加EDMX并将其与SQL数据库链接。
  4. 在.NET Core应用程序中引用该类库。

编译时会出现以下错误:

Type DbSet在未被引用的程序集中定义。

这意味着我必须向控制台应用程序添加ADO.NET Entity Framework引用,但.NET Core应用程序不支持完整的Entity Framework,因此无法添加。 我肯定是错过了什么或者误解了上面提到的帖子。问题出在哪里?

1
有没有特定的原因不使用EFCore? - OlegI
1
是的,因为我正在尝试一种情况,其中实体框架实现无法更改,但项目必须转移到 .net core。 - Mandar Jogalekar
1
EF 6.3 将在 .NET Core 3 中得到支持(目前处于预览版1):https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-3-preview-1-and-open-sourcing-windows-desktop-frameworks/ - haim770
@MandarJogalekar,这是一个相当不切实际的情况。转换到.NET Core意味着很多东西已经需要改变了。EF Core是未来得到完全支持的版本,而EF 6.3及其后续版本基本上处于维护模式。 - Panagiotis Kanavos
@MandarJogalekar,听起来问题的关键是如何使用EDMX,而不是EF 6。在EF Core中,可以使用Database-First(https://learn.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db),而不需要EDMX文件。即使在EF6中,您也可以将数据库反向工程为Code-First类。EDMX是EF 4-5的工作方式。无论如何,您都必须迁移离开它。 - Panagiotis Kanavos
Ef 6.3适用于.NET Core。要使EDMX文件正常工作,请查看此处的当前解决方法: https://learn.microsoft.com/en-us/ef/ef6/what-is-new/#ef-designer-support - Flemming Bonde Kentved
2个回答

3
从Entity Framework 6.3开始,您将能够在.NET Core中使用EF6.x,而不必切换到EF Core。
来自Diego Vega的博客文章Announcing Entity Framework 6.3 Preview with .NET Core Support
引用: EF 6.3有什么新功能? 虽然Entity Framework Core是从头开始构建的,以在.NET Core上工作, 但6.3将是第一个可以在.NET Core上运行并跨平台工作的EF 6版本。 事实上,此版本的主要目标是促进将使用EF 6的现有应用程序迁移到.NET Core 3.0。

2
你提供的链接很明确:
为了使用Entity Framework 6,你的项目必须编译成.NET Framework,因为Entity Framework 6不支持.NET Core。如果你需要跨平台功能,则需要升级到Entity Framework Core。
创建一个新的ASP.NET Core并将其目标设置为完整的.NET而不是Core。最初的回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接