c# - 为 EF 6.x 和 EF Core 重用 EF 实体
问题描述
我有一个关于 .NET 4.8 和 EF 6.4.4 的项目。我们正在逐渐迁移到 .Net Core,但在此过程中,我可以创建一个 .NET Core 数据上下文类 EF Core 并将两者都指向相同的实体吗?
解决方案
是的你可以。请参考下图。
- 将所有库转换为
.netstandard2.0
- 首先将所有模型移动到单独的项目中。
- 然后创建新项目,您将在其中将 dal 类迁移到 EF Core(我建议保留相同的命名空间
Dal.csproj
,Dal.Core.csproj
这样消费者就不会受到影响)。 - 将您的第一个 dal 课程从
Dal.csproj
移至Dal.Core.csproj
. 现在 Stage + Commit - 这是非常重要的一步,否则你会丢失这个类的 git 历史。现在您可以进行所有必要的更改以使其与新的DbContext
- 完成所有迁移后,将所有内容移
Dal.Core.csproj
回Dal.csproj
并删除Dal.Core.csproj
项目。不要忘记在提交之前进行更改,以便 git 将移动的文件识别为重命名而不是删除+添加。
提示:确保您了解EF Core 3中的笛卡尔爆炸问题
注意:如果您使用 EF Core 不支持的 EDMX 文件以模型优先方法工作,则无法将带有 EDMX 的项目转换netstandard2.0
为net48
.
推荐阅读
- c# - 从对象列表中复制特定项目,其索引列表对应于对象的 id
- mfc - 使用 TVITEMEX 代替 TVITEM 结构有什么好处?
- varnish - 无法开始使用 Varnish 和 Wordpress - 教程已过时?
- html - 对超链接使用“border-bottom”而不是“text-decoration”——它在语义上是否正确?
- php - 不能不安装任何包 throw pecl?
- javascript - 向未公开的收件人发送电子邮件 nodemailer
- python - Django 遍历关系
- mpi - 如何通过 SLURM 向正在运行的 MPI 作业添加更多进程和节点?
- logic - CFC和梯形图程序可以在单个codesys项目中运行吗
- php - REST API JWT 身份验证标头在 Bitnami Wordpress 实例中不起作用