【发布时间】:2021-07-15 19:48:35
【问题描述】:
我有一个在 net48 上运行的网络应用程序和几个在 netcoreapp3.1 上运行的 API。我目前的目标是 .Net 标准库中的 nestandard2.0、netcoreapp3.1 和 net48。所有应用程序共享同一个数据库,因此我尝试将 EF 6 与我的 .Net 应用程序和 EF 核心与我的 .Net Core API 一起定位。我能够在我的 .Net 应用程序中使用 EF Core,但有一些限制(主要是用户管理)。是否可以在我的 DbContext 类中同时定位 System.Data.Entity.DbContext 和 Microsoft.EntityFrameworkCore.DbContext ?我一直在尝试这样的事情:
#if NETCOREAPP3_1
public class MyContext: Microsoft.EntityFrameworkCore.DbContext
#elif NET48
public class MyContext: System.Data.Entity.DbContext
#endif
我似乎还没有找到一个好的解决方案。我什至尝试将整个类放在预处理器指令中,但 nada。这可能是不可能的,所以我可以针对 EF Core,但如果我仍然可以在我的 .Net 应用程序中使用 EF6,那么从架构的角度来看会容易得多。
【问题讨论】:
-
将两者包装在存储库/工作单元中。
-
EF6 支持 .Net 标准 2.1,所以可以在 netcoreapp3.1 和 net48 中使用。
-
@WiktorZychla 我考虑过这一点,但我担心 EF 的缓存。如果我调用 API 以使用 Core 上下文更新数据库,即使我更新实体状态,我是否也能够在 EF 6 上下文中看到该更新?
-
@GertArnold 如果我可以使用一个继承自 DbContext 的类,那就太好了。我目前可以使用 EF Core 做到这一点,但这对我的 MVC 应用程序来说很痛苦
-
正如我所说,仅适用于 EF6。 (!= EF core 6,当前的 alpha 版本)。
标签: c# asp.net-mvc entity-framework