【发布时间】:2020-10-01 19:23:00
【问题描述】:
我是一名新手 Web 应用程序开发人员,我正在通过开发一个 Web 应用程序来学习,每个成功注册的用户都将登录到他的数据库。所有用户都有相同的数据库架构,有时我需要更新架构,因为我添加了一项功能。
我试图在 Visual Studio 的包管理器控制台中的一个命令中使用新架构更新所有数据库 (PostgreSQL)。
我通常的做法是使用以下命令创建迁移(我的新架构):
add-migration -context MyContextRecords 初始
然后我执行的下一个命令是:
更新数据库-context MyContextRecords
第二个命令一次使用我在课堂上指定的一个数据库,我必须在键入此命令之前删除并删除数据库,这样做意味着用户存储的所有数据都将丢失。更不用说我是否有 100 个用户....为每个注册用户一次执行一个命令根本不方便...所以我相信一定有更好的方法?!?!?
那么,包管理器控制台中是否有更好的方法能够更新所有用户的所有数据库架构,而无需删除/删除 (pgAdmin) 和丢失数据。
谢谢:)
【问题讨论】:
-
为什么要为每个用户使用单独的数据库?
-
但是.. 数据库迁移可以在代码中触发;所有这些控制台命令正在为您添加代码文件并为数据库创建快照。您可以选择应用迁移的时间和数据库,尽管如果您有一百个数据库和一百个连接字符串并因此需要循环通过一百个上下文,这有点尴尬。就像 Garr 所说,为每个人都拥有一个数据库不是更容易吗?如果您的用户要求数据分离和他们自己的服务,那没关系;您将拥有一百台服务器和一百个配置文件,每个配置文件都有一个配置文件。部署到所有服务器,迁移工作
-
我从你的 Q 中得到的印象是你有一台 100 db 的服务器——这更令人讨厌
-
是的,我有一台服务器,其中可以有尽可能多的数据库,就像我说的那样,我只是在了解更多信息并进行试验。我正在考虑从现在开始保留迁移,而不是创建一个新的迁移,我只需通过添加我想要的新列来修改它。并编写某种脚本来更新此修改后的迁移存在的所有数据库。这可能吗?
标签: c# database postgresql entity-framework-core