如何在SERENE Core中使用现有SQL Server 2019 Express数据库
现有SQL Server 2019 Express数据库接入Serene Core的实操步骤
前置适配准备
- 检查SQL Server 2019 Express的网络配置:打开SQL Server配置管理器,为Express实例启用TCP/IP协议,设置固定静态端口,不要依赖共享内存协议连接,避免托管进程跨权限连接失败。
- 准备具备
db_owner权限的数据库账号:不管是Windows集成身份验证还是SQL账号认证,账号需要有在目标库创建表、修改表结构的权限,方便后续补全Serene要求的通用字段、初始化系统表。 - 确认Serene Core项目的依赖版本:确保项目引用的Serene包版本匹配对应.NET运行时版本,对齐SQL Server 2019的EF Core提供程序版本,避免出现旧版本不识别2019新数据类型的问题。
基础连接配置
- 定位项目根目录下的
appsettings.json文件,替换原有默认连接字符串块为目标库的连接配置:- SQL账号认证的连接串格式:
Server=本地机器名\SQLEXPRESS;Database=你的现有业务库名;User Id=你的数据库账号;Password=你的账号密码;TrustServerCertificate=True;Encrypt=False; - Windows集成认证的连接串格式:
Server=本地机器名\SQLEXPRESS;Database=你的现有业务库名;Integrated Security=True;TrustServerCertificate=True;Encrypt=False;
- SQL账号认证的连接串格式:
- 保存配置后先在开发工具的服务器资源管理器中测试连接,确认能正常读到目标库的表列表,再启动项目,避免连接串写错导致启动失败。
现有库的结构适配(核心环节)
- 反向生成代码:运行项目内置的
sergen命令行工具,选择“从现有数据库反向生成实体代码”,选择目标连接串后,勾选所有需要接入Serene管理的业务表、视图,工具会自动生成对应的Row实体、服务接口、前端页面代码,不需要手写实体映射。 - 补全Serene框架强制要求的通用审计字段:所有需要支持增删改查的业务表,必须匹配Serene的通用字段规范,没有的字段手动补上:
InsertUserIdint类型、InsertDatedatetime类型UpdateUserIdint类型、UpdateDatedatetime类型IsDeletedbit类型、TenantIdint类型
- 修正命名不匹配的映射:如果现有库的表名、列名是下划线命名、短名称,要在生成的Row类上添加
[Table("实际数据库表名")]、在对应属性上添加[Column("实际数据库列名")]特性,避免EF Core映射时找不到对应的表或列。
系统表初始化
- 运行Serene Core的内置数据库迁移命令,选择“仅创建缺失的系统表”模式,将Serene运行需要的用户表、角色表、权限表、日志表等系统结构写入现有业务库,绝对不要选择“删除所有现有表后重建”的迁移模式,避免清空原有业务数据。
- 检查是否存在表名冲突:如果迁移的系统表和现有业务表重名,需要在
appsettings.json的Serene配置块中为系统表设置自定义前缀,比如把系统表名统一加sys_前缀,避免表结构互相覆盖。
启动验证
- 以开发环境启动项目,查看控制台输出的详细日志,确认没有连接失败、映射错误、权限不足的报错。
- 用迁移初始化生成的默认管理员账号登录后台,逐个访问之前生成的业务页面,验证列表加载、新增、编辑、删除功能正常。
- 针对SQL Server Express的资源限制,调整连接字符串中的池化参数,将最大连接数设置在50以内,匹配Express版本的连接数上限,避免高并发下出现连接超时。
注意:如果现有业务表已经存在软删除字段、租户字段,只需要在实体上配置和Serene字段的映射关系即可,不需要删除原有字段重建。
内容的提问来源于stack exchange,提问作者COMPU EVOLUTION
相关产品推荐
相关产品推荐

