首页 > 解决方案 > 使用 Entity Framework Core 随着时间的推移管理数据库的规范化

问题描述

我们刚刚开始摆脱遗留代码库,并开始在我们的大多数新软件中使用 .net 和 Entity Framework Core。

我们已将数据库从旧平台迁移到 SQL Server,但数据陈旧且规范化程度不佳。由于对遗留语言中(大型)现有代码库的潜在影响,我们无法一次全部进行规范化项目,因此我们正在将主键和外键定义添加到我们的数据库中,并重新生成我们的 Entity Framework Core 模型随着更多表对框架有效,从头开始。

我觉得我们这样做错过了 Entity Framework Core 的一些重要功能,但我对框架的了解还不够,无法确定它是什么。我知道生成的模型缺乏完整性(提示我的问题是因为带有 Identity 列的表没有将该列标记为ValueGeneratedOnAdd();事实上该表根本没有出现在OnModelCreating方法中)但我不知道这是否是一个问题数据库或我正在犯的另一个错误。

我的问题是:Entity Framework Core 中有哪些功能可以管理快速发展的数据库模型?我应该为自己做什么,我应该依靠Scaffold-DBContext命令做什么?

标签: c#.netentity-framework-core

解决方案


使用 EF Core,您需要的大部分事情将由 Scaffold-DBContext 完成。它现在唯一不能处理的是 DBQuery 集。您将不得不手动编写这些代码。除此之外,其他一切都由命令非常雄辩地处理。

就 ValueGeneratedOnAdd() 而言,我唯一一次看到这是一个问题是版本化表。如果您有一个版本化的表,Scaffold-DBContext 不会将其添加到这些字段中,您必须拥有这些字段,因此您必须手动将它们添加到您的代码中。


推荐阅读