- 2024-07-25.NET 中使用依赖注入时,如果将 DbContext 注册为单例,会导致一些严重的问题
在.NET中使用依赖注入时,如果将DbContext注册为单例,会导致一些严重的问题。DbContext设计为一个短生命周期的对象,通常与一个请求(在Web应用中)或一个单元操作(在桌面应用中)相对应。以下是将DbContext注册为单例会导致的问题:1.线程安全问题DbContext不是线程安全的,将其注
- 2024-07-21读写分离实现方式
常见的.netcore代码层面的读写分离实现方式有以下三种:使用ORM框架的扩展或自定义实现注册多个DbContext:为每个数据库(主库和从库)注册一个DbContext实例,并在应用程序中根据操作类型(读或写)选择使用相应的DbContext。使用数据库工厂类:创建一个数据库工厂类(如IDatabaseFactory),该类
- 2024-07-02.Net Core Web Api 框架搭建简单步骤
1、建立.NetCoreWebApi项目2、新建相关类库项目3、在EFCORE项目中,创建DbContext 上下文实例,并将所有的实体类写入DbSet,在Program.cs中注入创建的DbContext 实力及配置数据库链接信息4、封装DbContext 仓储类Repository5、新建服务类及服务接口,继承仓储类进行数据增
- 2024-05-16避免DbContext同时在多个线程调用
下面这个微软官方文档阐述了,应该避免在多个线程上同时操作同一个DbContext:AvoidingDbContextthreadingissues其中有说到,在使用DbContext的代码中,所有的异步函数应该立即被await,否则会有极大概率抛出InvalidOperationException。这是因为一个DbContext实例不能被多个线程同时
- 2024-04-18自定义 AuthorizationMiddleware 的行为
在其它角色、策略权限验证后,系统再执行中间件,中间件成功后,最后才执行调用控制器方法。其它策略-》授权中间件-》控制器方法应用可以注册 IAuthorizationMiddlewareResultHandler,以自定义 AuthorizationMiddleware 处理授权结果的方式。应用可将 IAuthorizationMiddlewareRe
- 2024-04-14使用多个提供程序进行迁移 DbContext
使用多个上下文类型创建多个迁移集的一种方法是对每个提供程序使用一个DbContext类型classSqliteBlogContext:BlogContext{protectedoverridevoidOnConfiguring(DbContextOptionsBuilderoptions)=>options.UseSqlite("DataSource=my.db");}
- 2024-04-10Microsoft.EntityFrameworkCore.Tools
一、前言EntityFramework(后面简称EF)作为微软家的ORM,自然而然从.NETFramework延续到了.NETCore。Migration二、程序包管理器控制台为了能够在控制台中使用命令行来操作EF,需要先安装Microsoft.EntityFrameworkCore.Tools。安装Install-PackageMicrosoft.EntityFrameworkCore.T
- 2024-04-04年少不知EFCore好,错把SqlSugar当成宝
背景:依然记得我的第一份WebApi项目使用得是SqlSugar,当时还没有系统学习b/s这边的知识,跟着别人做项目用SqlSugar觉得非常方便,减少了自己手写ADO.Net的痛苦。但是今天发现这个EFCore也是巨好用啊,下面写一下他的简单使用。1、安装NuGet包--第一个是对应当前要使用的数据库
- 2024-04-03EF Core设计时 DbContext 创建
设计时DbContext创建本文内容从应用程序服务使用不带参数的构造函数从设计时工厂Args某些EFCoreTools命令(例如Migrations命令)要求在设计时创建派生的DbContext实例,以便收集有关应用程序实体类型及其如何映射到数据库架构的详细信息。在大多数情况下,由此创建的DbConte
- 2024-03-18迁移实体字段(迁移与回退) 迁移方式选择
在工作中有时会遇到在思考不周的情况下进行迁移,并应用到了数据库,找了一些方法,通过自己的实际测试,选择一种交友的方式使用例子,有2次迁移1、20240301075424_活动配置增加时间字段 2、20240314031411_测试新增字段---增加了1、方法一(推荐使用)实体新增字段:publicstring
- 2024-02-27DbContext配置解析
publicclassIdDbContext:IdentityDbContext<User,Role,long>{publicIdDbContext(DbContextOptions<IdDbContext>options):base(options){}protectedoverridevoidOnModelCreating(ModelBuildermodelBuilder){
- 2024-02-23.Net Core Unit of Work 基于Entity Framework Core 封装的多数据源操作 (MySql版本)
先说一下UnitofWork是什么:UnitofWork(工作单元)是一种设计模式,通常用于管理数据库事务和持久化操作。它有助于确保数据操作的一致性和完整性,同时减少不必要的数据库操作,提高性能。在软件开发中,UnitofWork模式通常与Repository模式一起使用。下面是UnitofWork模式的
- 2024-02-22.Net Core Entity Framework Core 的基础封装
上篇讲到 c#UnitofWork知识分享时,对于创建DBContext的封装没有讲到,这次分享跟大家publicinterfaceIDbContextFactory{DbContextCreateDbContext(stringconnectionString);}///<summary>///这里实现的思路是根据用户输入的代码来决定链接的是哪个数据库
- 2024-01-24SqlSugar DbContext
前言什么是SqlSugar?SqlSugar是.NET/C#平台非常优秀的ORM框架,目前Nuget总下载突破1000K,Github关注量也高达3.7KSqlSugar拥有高性能,具有百万级插入、更新大数据分表等特色功能,是目前当之无愧的国产优秀ORM框架之一。支持MySql、SqlServer、Sqlite、Oracle、pos
- 2023-11-15.NET7 使用DbContext 连接SqlServer数据库
- 2023-10-30DbContext相关
DbContext是线程不安全的,单列模式下,前一个sql为执行完,后一个不会执行。所有要做成作用域单列,一次请求是单列的。
- 2023-10-29DbContext&Repository基本实现
前言对于仓储模式,各有看法不同,直接使用DbContext简单方便,使用仓储模式扩展复用较好。受限于场景的差异,人员技能熟悉程度,交付时间,成本等选择哪种方式也有不同。Controller&DbContext当需要快速设计一个访问数据库Demo时,顺手便是Controller+DbContext,当然还有其他更为简便的方式
- 2023-10-13EF使用linq和lamda实现sql查询的内连接(inner join)和左连接(left join)
背景介绍:1.OperateLogInfo:日志表2.SystemUserInfo:用户表需求:查询日志表,要根据日志表的创建人id查询出创建人姓名(日志表连接用户表)publicstaticstringTest(){stringresult=null;varsqlLogs=newList<string>();
- 2023-10-09entity-framework 'scaffold-dbcontext' 未被识别为 cmdlet、函数、脚本文件或可操作程序的名称
//出现此错scaffold-dbcontext:Theterm'scaffold-dbcontext'isnotrecognizedasthenameofacmdlet,function,scriptfile,oroperableprogram.Checkthespellingofthename,orifapathwasincluded,verifythatthepathiscorrectandtry
- 2023-10-08造轮子之ORM集成
Dotnet的ORM千千万,还是喜欢用EFCORE前面一些基础完成的差不多了,接下来可以集成数据库了,官方出品的ORM还是比较香。所以接下来就是来集成EFCORE。安装包首先我们需要安装一下EFCORE的NUGET包,有如下几个:Microsoft.EntityFrameworkCore.ProxiesMicrosoft.EntityFrameworkC
- 2023-09-21使用MediatR库简化.NET应用程序中的CQRS实现
本文介绍了如何使用MediatR库简化.NET应用程序中CQRS(命令查询职责分离)模式的实现。我们将通过一个具体的业务场景来演示如何使用MediatR库,以及它带来的好处。引言CQRS(命令查询职责分离)是一种架构模式,它将一个对象的命令操作(例如创建、更新和删除)与查询操作(如读取和搜索)分离开来
- 2023-09-19使用CQRS和Event Sourcing实现高性能.NET应用程序
摘要本文介绍了如何使用CQRS(命令查询职责分离)和EventSourcing在.NET应用程序中实现高性能和可扩展性。我们将在一个具体的业务场景中应用这些模式,以演示它们如何解决实际问题。引言随着业务的发展和用户需求的增加,我们作为.NET程序员需要考虑如何提高应用程序的性能和可扩展性
- 2023-09-12.Net Framework使用Autofac实现依赖注入
.NetFramework使用Autofac实现依赖注入前言最近也是找了快2周的工作了,收到的面试邀请也就几个,然后有个面试题目是用asp.netmvc+Entityframework做一个学生信息增删改查系统。因为题目要求了用Entityframework也就是EF那也就不上core了,web项目也是用Framework4.8去做的。
- 2023-08-24ABP Sqlite 级联删除、ABP EF Sqlite级联删除
前言: 为实现在ABP中实现级联删除。 以前参照过ABP工作单元实现过一套符合公司业务要求的工作单元。1.如何实现ABPEFSqlite级联删除? 参考链接地址https://stackoverflow.com/questions/5890250/on-delete-cascade-in-sqlite3 sqlite默认是没有启用外键的,需
- 2023-08-14MySQL
Binlog(二进制日志):是逻辑日志,记录对数据库的操作改变的SQL,包括操作类型、值、时间戳、操作者等信息,还有事务的开始、提交、回滚等标记。具有平台无关性,可跨服务器、数据库引擎,但在跨平台时需要注意一些配置和环境问题。主要用于数据迁移、主从复制,以及数据恢复操作。在操作时