9.20 数据库生成模型
📝 模块更新日志
-
问题修复
-
cli.ps1
脚本不支持EFCore 7.0
问题 4.8.1.12 ⏱️2022.12.07 !676
-
在阅读下面文档之前,必须把 Furion
源码文件夹下的 tools/cli.ps1
文件拷贝到本地中(不能直接复制源码自行创建,会有编码异常问题)。而且 Fur.Web.Entry
层需要安装 Microsoft.EntityFrameworkCore.Tools
包。
如果出现 cli.ps1
无法运行的情况,如提示:“因为在此系统上禁止运行脚本”
,只需要打开系统管理员 CMD/Powershell
执行:set-ExecutionPolicy RemoteSigned
命令并根据操作提示输入 A
即可。
之后重启 Visual Studio
工具。
9.20.1 数据库开发方式
Furion
提供两种主要方法来 保持实体模型和数据库架构同步。
至于我们应该选用哪个方法,请确定你是希望以实体模型为准还是以数据库为准:
-
如果希望 以实体模型为准,请使用正向工程(Code First)。 对实体模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与实体模型兼容。
-
如果希望 以数据库架构为准,请使用反向工程(Database First)。 使用此方法,可通过将数据库架构反向工程到实体模型来生成相应的实体类型。
本章节是 反向工程(Database First) 的相关内容。
9.20.2 操作指南
目前 Furion Tools
生成工具默认不支持任何数据库生成,所以如需生成特定数据库的代码,只需要在 Furion.EntityFrameworkCore.Core
安装对应的数据库包即可:
各个数据库的包可查阅:多数据库操作-数据库提供器对应包
另外,只有 SqlServer
数据库支持可视化 GUI
操作,其他的只能命令行操作。
9.20.2.1 打开 程序包管理控制台
注意:开始之前先把 Furion.Web.Entry
设为启动项目。
9.20.2.2 切换默认项目
将 程序包管理控制台
默认项目设置为 Furion.Core
,如果您是其他名字,则切换对应即可。
9.20.2.3 输入 cli.ps1
命令
PM> Show-Command ../tools/cli.ps1
除了采用 Show-Command
方式以外,还可以直接执行命令,如:
&"./tools/cli.ps1" -DbProvider "Microsoft.EntityFrameworkCore.SqlServer" -CoreProject "XXX.Core" -EntryProject "XXX.Web.Entry" -ConnectionName "Default"
如果使用的是 SqlServer
数据库,则默认不需要指定 -DbProvider
参数。
如果不清楚当前运行环境的路径,可以输入 pwd
查看。
如果需要保持和数据库一模一样的命名,则使用 -UseDatabaseNames
参数指定,如:
&"../tools/cli.ps1" -UseDatabaseNames
执行上面命令后,此时 Cli
有一个等待输入提示:
Furion Tools v1.0.0 请键入操作类型:[G] 界面操作,[任意字符] 命令行操作
Furion Tools v1.0.0 您的输入是:
输入大写 G
进入界面操作模式,其他任意字符进入命令行操作模式。
目前只有 Sql Server
数据库才支持 GUI 界面操作模式
,其他数据库请使用命令行模式。
9.20.3 界面操作模式
9.20.3.1 启动界面操作
当我们输入 G
时,将打开 GUI
界面操作模式,如:
这时,Furion Tools
会自动查找所有数据库配置连接字符串的 .json
文件:
数据库连接字符串配置项需写到 json
配置文件中,且根节点需要写为 ConnectionStrings
。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.EntityFrameworkCore": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DbConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;",
"Sqlite3ConnectionString": "Data Source=./Furion.db"
}
}