当前位置: 首页 > news >正文

一个改善Entity Framework异常处理和错误信息的开源项目

使用DDD从零构建一个完整的系统

使用Entity Framework作为ORM框架应该是绝大多数项目的选择,使得我们操作数据库变得简单方便;但是我们操作数据库,绝对是无法避免数据库发生异常的情况,数据库针对每一种异常也都会提供一个编码来指定异常。

但是编码对于我们阅读很不友好,我们还需要查阅相关文档,才能明白其中的意思,而且不同数据库的编码还不一样。

今天就给大家推荐一个开源项目,可以完美解决此问题。

01 项目简介

EntityFramework.Exceptions是一个针对Entity Framework解决在异常处理方面的一些问题,为开发人员提供更好的异常处理和错误信息。

该项目将Entity Framework的异常转换为更具可读性的异常信息,并提供更详细的错误描述,以便开发人员更好地理解和解决问题,从而有助于减少调试和修复问题的时间,从而提高开发效率。

该项目支持的数据库有:SQLServer, PostgreSQL, SQLite, Oracle 和 MySql。

02 项目结构

项目解决方案

文件目录

03 使用方法

下面我们对比:传统处理异常和使用该项目处理异常的区别:

**以下例子:**插入两个相同的产品名称,传统写法代码如下:

using (var demoContext = new DemoContext())
{demoContext.Products.Add(new Product{Name = "产品1",Price = 1});demoContext.Products.Add(new Product{Name = "产品1",Price = 10});try{demoContext.SaveChanges();}catch (DbUpdateException e){var sqlException = e.GetBaseException() as SqlException;//编码:2601,违反唯一索引规范if (sqlException != null && sqlException.Number == 2601){//违反了唯一索引,记录日志Log("产品名称重复,请检查产品名称!")}}
}

**以下例子:**插入两个相同的产品名称,使用该项目写法代码如下:

using (var demoContext = new DemoContext())
{demoContext.Products.Add(new Product{Name = "产品1",Price = 1});demoContext.Products.Add(new Product{Name = "产品1",Price = 10});try{demoContext.SaveChanges();}catch (UniqueConstraintException e){//违反了唯一索引,记录日志Log("产品名称重复,请检查产品名称!")}
}

以上的代码,UniqueConstraintException 就是该项目已经为我们定义好的异常,我们在使用的时候就无需关系具体编码,而且不同数据库的编码是不一样的,我们也无需关心。

04 项目地址

https://github.com/Giorgi/EntityFramework.Exceptions

- End -

推荐阅读

推荐一个.Net Core开发的蜘蛛爬虫开源项目

一个.Net Core开源监控解决方案,支持Redis、Elasticsearch、SqlServer

一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存

基于.NET 7 + iView 的前后端分离的通用后台管理系统开源框架

一个C#开发的开源的快速启动工具

相关文章:

  • 网络--应用层自定义协议与序列化
  • 捋一遍Leetcode【hot100】的二叉树专题
  • leetcode0113. 路径总和 II - medium
  • 6.8 Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度
  • 重读《人件》Peopleware -(7)Ⅰ管理人力资源Ⅵ-莱特瑞尔 Laetrile
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • 遨游科普:防爆平板是指什么?有哪些应用场景?
  • 【EDA软件】【设计约束和分析操作方法】
  • ai学习中收藏网址【1】
  • Python学习之Seaborn
  • Redis 的持久化机制(RDB, AOF)对微服务的数据一致性和恢复性有何影响?如何选择?
  • CiteULike 数据集介绍与下载指南
  • docker底层原理
  • 使用Redis5.X部署一个集群
  • FPGA——基于DE2_115实现DDS信号发生器
  • 2024期刊综述论文 Knowledge Graphs and Semantic Web Tools in Cyber Threat Intelligence
  • 2025.04.19【Spider】| 蜘蛛图绘制技巧精解
  • TDOA解算——牛顿迭代法|以4个基站的三维空间下TDOA定位为背景,使用牛顿迭代法解算。附完整代码,订阅专栏后可复制粘贴
  • XSS跨站脚本攻击漏洞
  • 哈希表简介
  • 为博眼球竟编造一女孩被活埋,公安机关公布10起谣言案件
  • 平安银行一季度净赚超140亿元降5.6%,营收降13.1%
  • 部分人员无资质展业、投资建议无合理依据,天相财富被责令改正
  • 王健林出售酒店管理业务的资金如获批,可用于向全体股东分红
  • 非法收受财物2.29亿余元,窦万贵受贿案一审开庭
  • 摩根大通首席执行官:贸易战损害美国信誉