开源EFCore 对比实体与实际数据库结构的工具-GZY.EFCoreCompare

news/2025/2/21 20:23:25/文章来源:https://www.cnblogs.com/GuZhenYin/p/18719304
前言

GZY.EFCoreCompare 是一个用于 对比数据库结构和 EF Core 代码中的 DbContext 的库

它基于 EF Core 的 Scaffolding 机制,生成 DatabaseModel(从数据库提取的模型),

并与代码中的 DbContext 进行比对,从而找出两者之间的差异。

开源项目地址:GZY.EFCoreCompare

 欢迎start和提issues

 

主要用途
  • 检查数据库与代码是否匹配

    • 通过 EF Core Scaffolding 解析数据库结构(DatabaseModel)。
    • 读取代码中的 DbContext 及其 EntityType 实体定义。
    • 对比两者的字段、表、主键、索引等内容。
  • 检测并生成对应的报表

    • 发现 数据库中有但代码中没有的表(可能需要删除)。
    • 发现 代码中有但数据库中缺失的表或字段(可能需要添加)。
    • 发现 数据类型、索引、约束等的差异(可能需要修改)。
  • 帮助团队进行数据库变更管理

    • 在开发过程中,避免数据库和代码模型不同步。
    • 适用于 DBFirst 和 CodeFirst 的开发模式,确保两者一致。
    • 可用于 自动化 CI/CD 流水线,在部署前发现问题。
    • 可用于 部署/更新后判断数据库是否标准,在部署后发现客户或线上的问题。

 

对比流程
  • 获取数据库结构

    • 使用 EF Core Scaffolding 解析数据库,并生成 DatabaseModel
  • 读取代码中的 DbContext

    • 解析代码中的 DbContext 及其实体。
  • 比对两者的差异

    • 找出 表、字段、类型、索引、主键、外键 等方面的不同。
  • 提供UI查看界面与Execl报告

    • 提供 UI查看界面,用于图形化查看差异。
    • 生成 差异报告,供开发人员参考。
使用方式

 1.直接使用 GZY.EFCoreCompare.Core 进行比对

  直接在项目中通过Nuget引用GZY.EFCoreCompare.Core与对应数据库的驱动库,例:GZY.EFCoreCompare.MySql 库中,比对代码如下:

var compareEFcore= new CompareEFCore();
compareEFcore.CompareEfWithDbAsync(YourDbContext);

 

 

2. 集成图形化UI到项目中,进行持久化比对

  • Web(MVC Raroz)或WebApi项目中通过Nuget引用GZY.EFCoreCompare.UI与对应的数据库驱动,例如:GZY.EFCoreCompare.MySql
  • 在 Program或Startup中添加如下代码:
 builder.Services.AddDbContext<TestDbContext>(options =>{string connStr = "";options.UseMySql(connStr, new MySqlServerVersion(new Version(8, 0, 20)), builder => {builder.SchemaBehavior(MySqlSchemaBehavior.Ignore);});}); //注入EFDbContext
builder.Services.AddEFCoreCompareUI(new CompareEFCoreConfig { CaseComparer=StringComparer.CurrentCultureIgnoreCase}); //需放在AddDbContext之后
app.UseEFCoreCompareUI(); //添加UI界面

 

 
  • 在游览器输入地址:http://localhost:5130/DBCompareUI/DBCompareUI为UI的界面地址

  • 输入默认Basic校验账户,账户名:Admin 密码:123456
  • 点击开始对比,进行比对

  • 效果如下图:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/885372.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

趁着过年的时候手搓了一个低代码框架

这个春节假期,我干了一件大事:春节期间手搓了一个低代码框架——CodeSpirit(码灵)。 为什么手搓低代码框架? 市面上的低代码平台不少,但大多存在“黑箱生成、性能损耗、扩展性差”的痛点。开发者一旦需要深度定制,往往束手无策。而CodeSpirit的初衷是:让全栈开发回归工…

C# TorchSharp 图像分类实战:VGG大规模图像识别的超深度卷积网络

目录VGG大规模图像识别的超深度卷积网络数据集直接下载opendatalab 数据集社区自定义数据集模型训练 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址: https://torch.whuanle.cn 电子书仓库:https://github.com/whuanle/cs_pytorch Maomi.Torch 项目仓库:https://…

AI应用实战课学习总结(9)Hello 深度学习

本文介绍了深度学习和神经网络的基本概念,深度学习和传统机器学习的差别,还了解了PyTorch框架,最后通过一个例子演示了如何基于PyTorch使用一个视觉检测模型来快速完成图片的目标检测任务,十分方便。大家好,我是Edison。 最近入坑黄佳老师的《AI应用实战课》,记录下我的学…

CAP与BASE:分布式系统设计的灵魂与妥协

CAP 理论 CAP理论起源于 2000 年,由加州大学伯克利分校的 Eric Brewer 教授在分布式计算原理研讨会(PODC)上提出,因此 CAP 定理又被称作 布鲁尔定理(Brewer’s theorem) 2 年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 发表了布鲁尔猜想的证明,CAP 理论正式成为分…

又双叒更新!清华大学DeepSeek手册 第Ⅱ册《如何赋能职场应用》

继清华大学DeepSeek手册第Ⅰ册《从入门到精通》发布后,很多小伙伴对DeepSeek的使用有了更深一层的理解,第Ⅰ册中不仅涵盖了DeepSeek的基本功能,还提供了实用的操作指南,帮助大家更好地掌握这一强大的AI工具;针对于职场环境,清华大学又推出了DeepSeek使用手册 第Ⅱ册《如何…

深入浅出理解Continuous Queries和Cypher Query Language

1. 什么是Continuous Queries?连续查询是 Drasi 最重要的组件。它们是您告诉 Drasi 要在源系统中检测哪些更改以及检测到更改时要分发的数据的机制。源为订阅的 Continuous Queries 提供源更改,然后为订阅的 Reactions 提供查询结果更改。Continuous Queries(持续查询)是一…

Bronco CTF Write Up 题解

Bronco CTF Write Up 目录Bronco CTF Write UpBeginnerBreak the BattalionSimon SaysToo Many EmojisCryptoAcross the TracksRahhh-SAWebGrandmas Secret RecipeReverseReversing for Ophidiophilestheflagishere!ForensicsQR Coded Beginner Break the Battalion这道题我们会…

我用DeepSeek找到了视频号流量密码,摊牌了!

两娃的爸创业中,公众号“绘个球”(回复1)实时分享创业动态,提供地理、军事类3D动画工具。流量初战告捷 先上流量效果,图从左至右分别为小红书、快手、视频号。对于一个短视频新手,算得上惊喜。如果是一条可长期复制的流量赛道,运营的事就水到渠成。接下来我会知无不尽地说…

Trivy : 容器漏洞扫描器

介绍 安装 扫描 Git 存储库 扫描容器镜像 扫描文件系统 扫描正在运行的容器 在 Dockerfile 中嵌入 Trivy介绍 Trivy 是aqua security开发的一款开源工具,用于扫描漏洞和配置错误。该工具可在多个层面发挥作用:它可以评估基础设施即代码、检查容器镜像、提供配置文件帮助、分析…

2024.2.16 鲜花

逆元详解逆元(详细揭秘)雑踏、僕らの街 やり残した鼓動がこの夜を覆って 僕らを包んで 粉々になる前に 頼りなくてもいい その手を この手は自分自身のものさ 変わらないはずはないよ 手を伸ばして 雑踏の中で声無き声で泣いている 足跡が今 誰かの声を消した朝 いつになって…

国内开源镜像站点汇总

还在为访问国外网站速度慢如蜗牛而烦恼吗?还在为下载大型开源项目耗时过长而焦虑吗?今天就为大家介绍一个神器:国内开源镜像站点! 什么是镜像站? 简单来说,镜像站就是将国外网站的内容(包括软件、文档、代码等)复制到国内服务器上,用户访问国内镜像站就相当于访问国外…

【shell脚本】实现DDOS攻击自动封禁IP

需求: 请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP。防火墙命令为: iptables-I INPUT -s IP地址 -j DROP脚本实现: #!/bin/bash ############################################################# # File Nam…