dotnetclub-net / dotnetclub

dotnetclub.net 的源代码
https://dotnetclub.net
MIT License
259 stars 80 forks source link

使用持续运行的数据库引擎作为持久化数据库 #43

Closed jijiechen closed 5 years ago

jijiechen commented 5 years ago

目前,dotnetclub 仍然是以 Sqlite 作为数据库的。 由于 Sqlite 不需要专门的、持续运行的数据库服务器支持,因此对前期的快速开发提供了很好的支持。

但如果 dotnetclub 上线运营,就需要使用一种更稳定的数据库系统作为持久化设施。因此,现在考虑将数据库换为数据库引擎。

这一功能的需求为:

  1. 提供一种数据库解决方案,并实现对配置的分析(parsing)、装载(configuring),使目前的 dotnetclub 业务代码几乎不需要修改就可以使用新的数据库。目前已经使用 Entity Framework Core 作为 ORM,因此这一项需要读入配置、进行分析,并正确配置 Entity Framework DbContext 对象。
  2. 需要能够运行目前已经编写的 FluentMigrator 迁移脚本,未来仍需要支持使用 FluentMigrator 编写迁移脚本。
  3. 提出一种数据库解决方案,并实现适配代码,以支持开发期间、体验期间,无需配置专门的数据库连接字符串(Connection String)即可以演示模式运行 dotnetclub。理想情况下,用户如果未专门配置,则默认使用此模式;只有专门配置时,才使用数据库引擎。
  4. 需要支持在单元测试的自动化运行。理想情况下,网站前台的单元测试,涉及数据库的,应该要以尽量仿真的方式运行(比如,关系型数据库的内存模式,如果支持的话)。

目前,可供选择的选项有: PostgresSQL,以及 MySQL。

请参考此处的源代码了解目前的实现,以及目前的效果

欢迎讨论,以及 PR。

jijiechen commented 5 years ago

随着 46 这一 PR 的合并,这一问题已得到解决。 多谢 @wallevy 的帮助。 最近会部署,并更新相关 WiKi。