【问题标题】:Use EF6 with ASP.NET Core将 EF6 与 ASP.NET Core 一起使用
【发布时间】:2016-09-09 13:49:01
【问题描述】:

我正在开发一个新项目 - 我想使用最新的 .NET Core 来完成它。

阅读文档后,我发现了 Entity Framework Core 和 Entity Framework 6.x 的比较。 Here

我需要的一些功能例如:Spatial Data Type 不受 EF Core 支持。所以我不能使用它,因为项目中需要空间数据类型。

再次浏览文档,我发现了有关如何将 EF 6.x 与 .NET Core 一起使用的链接:Here

在它提到的文章中(Here):

开始之前,请确保针对完整的 .NET 进行编译 您的 project.json 中的框架作为实体框架 6 不支持 .NET 核心。如果您需要跨平台功能,则需要 升级到 Entity Framework Core。

我真的不需要我的项目是跨平台的。

文章中关于如何使用 EF6 和 ASP.NET Core 不是很清楚。

我创建了一个新的ASP.NET Core Web Application

然后我使用 Nuget 包管理器安装了 EF6,并收到以下错误

我从project.json 中的框架中删除了netcoreapp1.0,并添加了net46 作为框架,这消除了EF 的错误,但现在我遇到了另一个错误。

  1. 那么如何将 EF6 与 ASP.NET 核心一起使用?

  2. 当我使用 EF6 时,我必须删除所有对 .NET Core 的引用,是否 这意味着我没有使用 .NET Core?这个除了不能跨平台运行还有什么缺点?

【问题讨论】:

  • ASP.NET Core 和 .NET Core 是不同的东西。创建 ASP.NET Core 项目时,可以选择是针对 .NET Framework 还是针对 .NET Core 进行构建。您需要执行前者才能使用 EF6。如果您创建了一个针对 .NET Core 构建的项目,那么您应该放弃它并创建一个针对 .NET Framework 构建的新项目。它们是“新项目”对话中的不同选项。
  • @jmcilhinney 所以我需要创建一个 ASP.NET Core Web 应用程序 (.NET Framework) 项目?
  • 就是这个。
  • @jmcilhinney 我将在单独的类库项目中添加我的实体 - 我必须使用哪种类型的类库项目? .NET Core 类库还是面向 .NET Framework 的传统类库?
  • 如果你不想跨平台应用。为什么不能在 4.6 和 EF 6 中创建常规 MVC 应用程序。

标签: entity-framework entity-framework-6 asp.net-core entity-framework-core asp.net-core-1.0


【解决方案1】:

要停止第二个错误,您需要从 project.jsondependencies 部分删除以下内容:

"Microsoft.NETCore.App": {
    "version": "1.0.0",
    "type": "platform"
}

作为参考,referencing the full .NET Framework and Entity Framework 6 from an ASP.NET Core project 的文档有一个完整的 project.json 示例。

删除对 .NET Core 的引用并不意味着您没有使用 ASP.NET Core。您只是在更改将执行 ASP.NET Core 项目的目标运行时平台。

将 ASP.NET Core 与完整的 .NET Framework 结合使用,您可以获得用于构建 Web UI 和 Web API 的新项目结构和统一故事(例如统一的Controller 类)的好处,并且您还可以访问成熟、功能齐全的 .NET Framework,支持使用尚未移植到 .NET Core 的依赖项和 NuGet 包,例如 Entity Framework 6。

【讨论】:

    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2017-03-11
    • 2019-11-02
    • 1970-01-01
    • 2015-06-25
    • 2019-11-15
    相关资源
    最近更新 更多