ef-core-3.1 - 实体框架核心,数据库优先。关于意外丢失数据的初学者问题
问题描述
我还没有用 EF Core 写过一行代码,但我一直在阅读教程并试图首先掌握这个概念。我一直无法找到有关意外丢失数据的这些问题的任何答案:
- 首先使用数据库,如果我手动编写了数据库模型并且忘记在 DbContext 中添加一些表作为 DbSet 对象,那么缺少的表是否会在 SaveChanges 上被删除?
- 如果 DbSet 为空并调用 SaveChanges,是否会删除相应表中的所有行?
一般来说,是否存在任何可能导致数据丢失的陷阱,或者如果您忘记做某事,或者是否所有硬删除操作都需要显式代码?
解决方案
为了避免误解,我对问题进行了一些重新表述。
不在我的 DbContext 中的表是否已在 SaveChanges 中删除?
仅当您删除数据库或以其他方式删除表时,才会删除表。
如果一个 DbSet 为空,调用了 SaveChanges,会不会删除对应表的行?
是的。否则框架将无法工作。
是否有任何可能导致数据丢失或忘记做某事的陷阱
这取决于你的意思是错误或忘记做某事。如果您忘记保存更改,那么您的更改将会丢失。如果您错误地修改、删除或删除表,那么您的数据当然会丢失。
您应该始终定期备份数据库,测试备份是否可以恢复,并在数据库副本上测试新内容。
推荐阅读
- xpath - XPATH (eXistdb) 如何替换 HTTP 请求内容中的文字
- angular - 使用 Angular Universal 将 Angular 8 应用程序转换为静态应用程序
- html - 如何将文本放在按钮的中心
- pkcs#7 - 如何批量解压 p7s/p7m 文件
- c# - 如何在不使用 CreateMissingTypeMaps 的情况下升级到 Automapper 9.0 进行查询(因为它已被弃用)?
- git - 合并从 dev 分支到所有功能分支的更改
- scala - Can I use scala type parameters with a val?
- angular - Angular ngFor 无法显示数据
- python - 在 PyCrypto 中重新创建一个 openssl 解密命令
- yii2 - Yii2:迁移不适用