ASP.NET Core
文章平均质量分 61
ASP.NET Core 开发
从入门到入土,
紧跟时代潮流,
创造美好人生。
有诗亦有远方
世界既不黑也不白,而是一道精致的灰。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
EFCore——三种关系的配置(9)
关系的配置之一对多一、关系配置的套路二、建立实体三、对实体进行配置四、执行迁移更新五、添加控制台代码执行Sql操作一、关系配置的套路EFCore中配置的套路HasXXX(…).WithXXX(…);XXX有One与Many两个选项,HasOne(…).WithMany(…);一对多HasOne(…).WithOne(…);一对一HasMany(…).WithMany(…);多对多例:HasOne(a).WithMany(b);可以理解为,这个实体有一个a,这个a有多个b二、建立实体1.原创 2022-01-02 16:49:45 · 2116 阅读 · 0 评论 -
EFCore——使用EFCore进行增删改查(2)
使用EFCore进行增删改查一、添加数据二、查看数据三、修改四、删除五、EFCore不足一、添加数据 //dbcontext 逻辑上的数据库,并不是真实的 Book book1 = new Book { AuthorName = "lty1", Tittle = "深入浅出EFCore", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) }; Book book2 = ne原创 2021-12-16 18:53:27 · 1561 阅读 · 0 评论 -
EFCore——EFCore底层实现(7)
EFCore底层实现一、为什么要了解数据库底层二、EFCore的运作流程三、查看生成的SQL语句四、执行一条插入语句五、总结一、为什么要了解数据库底层因为框架是方便程序员开发的,而不是让程序员变成傻瓜的,当我们用框架时,应该知道底层发生了什么,而不是框架告诉你怎么用就怎么用。就比如,尽管EFCore优化的足以很好的解决绝大部分的场景,但有些场景却不那么尽人意,这时候我们就需要知道他底层是怎么工作的,当出错了能明白啥哪里出了问题,然后可以自己进行调整。如果只会用框架,就不能解决这些问题;二、EFCor原创 2021-12-19 18:56:57 · 1244 阅读 · 0 评论 -
EFCore——单向导航属性(11)
单向导航属性一、双向导航与单项导航二、单向导航三、创建实例1.建立实体关系2.配置Leave实体关系3.添加数据一、双向导航与单项导航文章实体 class Article { public List<Comment> Comments { get; set; } = new List<Comment>(); }评论实体 class Comment { public long TheArticleId { get; s原创 2022-01-07 12:00:22 · 1402 阅读 · 2 评论 -
EFCore——反向工程(6)
反向工程一、用数据库表反向生成实体类1.建表2.反向生成的命令二.生成的实体类与DbContext类三、总结一、用数据库表反向生成实体类1.建表2.反向生成的命令Scaffold-DbContext “server=localhost;uid=sa;pwd=123456;database=LTYHR;” Microsoft.EntityFrameworkCore.SqlServer二.生成的实体类与DbContext类1.实体类虽然属性正常输出了,但是表的名字却由T_Persons变为 T原创 2021-12-19 16:03:14 · 1291 阅读 · 0 评论 -
EFCore——原生Sql语句(12)
原生Sql语句一、在EFCore的体系下执行原生SQL1.执行查询原生sql(FromSqlInterpolated)2.执行非查询sql(ExecuteSqlInterpolatedAsync)二、使用ADO.NET体系下执行纯原生SQL1.为什么使用ADO.NET2.ADO.NET举例一、在EFCore的体系下执行原生SQL1.执行查询原生sql(FromSqlInterpolated)1.在EFCore体系执行SQL有很大的限制,但较为方便2.执行原生查询Sql语句//使用了插值函数,Art原创 2022-01-10 21:10:26 · 4625 阅读 · 0 评论 -
EFCore——FluentAPI(3)
FluentAPI一、约定配置二、两种属性配置三、为什么建议使用FluentAPI四、FluentAPI的示例配置1.给Book类添加一个属性,并配置。2.配置显示主键3.其他配置Fluent(流畅的~)最好只使用基础的EF功能,不要过多使用高级特性!!!一、约定配置1.表名采用DbSet的属性名。2.数据列的名字对应的是实体类的名字,列的类型采用的是更实体类的属性最兼容的数据类型3.数据列的可空性对应的是实体类数据的可空性4.默认属性名为Id的属性为主键,如果属性为int long short类原创 2021-12-17 17:29:13 · 1175 阅读 · 0 评论 -
EFCore——控制台搭建EFCore开发环境(1)
控制台搭建EFCore开发环境一、EFCore简介二、实例创建三、源码地址一、EFCore简介1.是对与底层ADO.Net Core的封装,ADO.Net Core支持的数据库,EFCore不一定支持2.EFCore支持目前市面大部分主流数据库3.EFCore尽力在屏蔽底层数据库的差异,也就是不写具体的sql语句, EFCore自动将你的代码转换为对应数据库的SQL语句,当然EFCore的动作也不可预测也就是你看不到具体写的Sql语句,不知道底层发生Sql了什么 4.类原创 2021-12-16 15:45:22 · 1216 阅读 · 2 评论 -
EFCore——IQueryable与IEnumerable的区别(13)
IQueryable与IEnumerable的区别一、IQueryable与IEnumerable的简单实例二、IQueryable与IEnumerable的区别一、IQueryable与IEnumerable的简单实例1.IEnumbleList<Comment> list = new List<Comment>();list.Where(c => c.Message.Contains("微软")); //当我们转到where定义发现如下//这里where可原创 2022-01-11 11:04:29 · 734 阅读 · 0 评论 -
EFCore——为什么除了外键还要额外属性(10)
原创 2022-01-06 17:12:47 · 703 阅读 · 0 评论 -
EFCore——IQueryable的延迟执行(14)
IQueryable的延迟执行一、IQueryable不遍历二、IQueryable不遍历三、IQueryable特性四、为什么延迟构建一、IQueryable不遍历只执行,然后在控制台打印sql语句日志 IQueryable<Comment> comment = ctx.Comments.Where(c => c.Message.Contains("失业"));发现最后什么也没发生二、IQueryable不遍历 Console.WriteLine("准备执行where"原创 2022-01-11 13:17:34 · 639 阅读 · 0 评论 -
EFCore——通过代码查看Sql语句(8)
通过代码查看Sql语句一、为什么要使用代码使用SQL二、代码查看的方式1.标准日志模式2.简单日志LogTo3.ToQueryString三、总结一、为什么要使用代码使用SQLProfiler是显示所有活动,如果一个服务器是多个人员使用,产生的Sql非常多,即使使用过滤也很麻烦二、代码查看的方式1.标准日志模式(1)引入nuget包Microsoft.Extensions.Logging.Console(2)再添加 代码到DbContext为了方便,不使用注入方式,直接使用静态方法//作用原创 2022-01-01 10:22:51 · 2060 阅读 · 0 评论 -
EFCore——主键(4)
主键一、主键二、Guid主键三、其他方案一、主键1、EFCore支持多种主键生成策略:自动增长;Guid;Hi/Lo算法等2.自动增长。 优点:简单;缺点:数据库迁移及分布式系统中比较麻烦;并发性能差3.自增字段代码不能为Id赋值,默认为0,否则运行报错二、Guid主键1.Guid算法,生成一个全局唯一的Id。适合分布式系统,进行数据合并的时候很简单,优点:简单,高并发;缺点:磁盘暂用空间大2.Guid的值不连续。使用Guid类型做主键的时候,原创 2021-12-17 20:11:35 · 2126 阅读 · 0 评论 -
EFCore——Migration深入浅出(5)
Migration深入浅出原创 2021-12-19 11:34:50 · 2626 阅读 · 0 评论 -
Autofac浅学(2)
使用Autofac 注册组件,通过创建一个ContainerBuilder并且告知builder 哪些组件公开哪些服务。基本类PersonTeacherStudent二、反射组件三、实例组件有时候,您可能希望提前生成一个对象的实例,并将它添加到容器供组件注册使用。你可以这样做,使用RegisterInstance 方法:...原创 2022-06-10 18:01:56 · 331 阅读 · 0 评论 -
Autofac初学(1)
引入nuget包三、创建实现类四、创建实例五、测试结果原创 2022-06-10 10:29:26 · 247 阅读 · 0 评论 -
CQRS详解
举例总结整个事件的过程原创 2022-06-16 17:51:20 · 7356 阅读 · 0 评论 -
结合Command以AOP方式实现事务
这里类似于AOP编程,在进行注册后,能都在每个CommandHandler前后进行处理,这里是将每个handler包裹在一个事务里,来保证数据的一致,完整。原创 2022-08-05 10:40:09 · 352 阅读 · 1 评论 -
MediatR——IRequest(1)
创建weiapi项目CreateOrderCommandIRequestHandlerOrderController.cs当IRequestHandler有两个处理程序方法,只会处理一个。通过一个中介者完成业务流程,显得控制器更加清晰,只负责提供接口、接收数据和权限标注......原创 2022-06-13 09:09:04 · 446 阅读 · 0 评论 -
Autofac注册组件(3)
RegisterAssemblyTypes()接受一个或多个程序集的参数数组。默认情况下,程序集中的所有的公共的,具体类将被注册。你可以过滤一组注册的类型,通过使用linq表达式。对于RegisterAssemblyTypes()注册语法是单个类型注册语法的超级集合,所以像As()方法都将在程序集中很好的工作。调用将适用一组规则,如果有多种不同的组件注册,一次或多次调用。正如通常的组件注册,可以一起添加多个As()调用。...原创 2022-07-16 09:15:45 · 1320 阅读 · 0 评论 -
NetCore使用Dapper查询数据
与ConfigureServices同级。原创 2022-08-06 11:12:35 · 1423 阅读 · 0 评论 -
NetCore结合CAP事件总线实现分布式事务——消息(2)
配置详细地址原创 2022-06-11 11:10:00 · 654 阅读 · 0 评论 -
HttpPost的参数传递
fds原创 2022-06-06 18:08:34 · 1752 阅读 · 0 评论 -
Autofac生命周期(4)
在工作单元的开始时创建生命周期范围,工作单元需要的服务从这个生命周期范围解析获得。比如,一个HTTP请求,每一个工作单元都会创建一个nestedlifetime,如果在每一次HTTP请求中创建一个nestedlifetime,那么其他使用per-lifetime的component在每次HTTP请求中只会拥有一个实例。例如,一个实现IDisposable的对象,它的生命周期就是从实例化时开始,持续到调用它的Dispose时结束。例如,程序中全局的静态的单例对象,它的范围是整个程序。...原创 2022-07-16 11:08:11 · 296 阅读 · 0 评论 -
NetCore结合CAP事件总线实现分布式事务——过滤器(3)
过滤器方法 MyCapFilterSubDBContext连接字符串执行结果原创 2022-06-13 08:41:42 · 547 阅读 · 0 评论 -
CQRS——eShopOnContainers(2)
订单状态改变的集成事件的持久化保存原创 2022-06-16 18:21:23 · 345 阅读 · 0 评论 -
NetCore结合CAP事件总线实现分布式事务——入门(1)
CAP 是一个EventBus,同时也是一个在微服务或者SOA系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。在微软的 eShopOnContainer 微服务示例项目中,推荐使用 CAP 作为生产环境可用的 EventBus。安装RabbitMq官网下载(转载)RabbitMq详解三、配置信息Publisher1. Startup.cs2.PubDbContextappsettings.json文件配置连接字符串3.PubController原创 2022-06-11 10:51:24 · 1913 阅读 · 0 评论 -
MediatR——INotification(2)
132原创 2022-06-13 09:21:44 · 506 阅读 · 0 评论 -
Refit简单使用
Refit 是一个类型安全的 REST 开源库,是一套基于 RESTful 架构的 .NET 客户端实现,内部使用 HttpClient 类封装,可通过 Refit 更加简单安全地访问 Web API 接口,要使用 Refit 框架,只需要在项目中通过 NuGet 包安装器安装即可。三、使用创建两个weiapi ==01_Publisher 和02_Subscriber ==2.ThriftAController3.Person02_Subscriber1.ThriftBController原创 2022-06-06 18:58:43 · 2070 阅读 · 0 评论 -
实现资源的局部更新 Patch
实现资源的局部更新 Patch1.Patch的请求主体Json Patch(json补丁文档)Json Patch的六个操作操作实例原创 2021-08-06 17:21:09 · 292 阅读 · 2 评论 -
netcoreapi之上传和下载文件
注意这里IFormFIle。,必须为file,不能是别的名字。原创 2022-08-08 11:06:15 · 3914 阅读 · 1 评论 -
NetCore缓存——缓存雪崩(6)
缓存雪崩一、什么是缓存雪崩二、解决办法一、什么是缓存雪崩1.缓存集中过期引起的缓存雪崩2.举例双十一抢购假设:首页100个抢购商品,缓存为五分钟在开始有100个商品的缓存,如果5min同时缓存过期,那么,这是就会有一百个请求。服务器周期性的压力增大。当请求的足够多的时候服务器就会奔溃。所以我们需要设置缓存为随机过期。减轻服务器压力二、解决办法1.设置缓存的随机过期Random.Shared.Next(10,15),是Net6的一个全局静态Random,在net6之下,使用new Ra原创 2022-01-25 11:26:30 · 1016 阅读 · 0 评论 -
Apollo在NetCore实践
首先重要一点,要在windows下运行启动脚本demo.sh的前提是安装"MingW"不能用“CygWin”。因为在CygWin里运行java会报找不到jar文件的问题。Namespace中添加Key/Value配置项(可以通过文本形式添加,速度更快),添加之后记得点击发布。运行sql目录中的两个sql脚本,如果原来有库注意备份。设置两个数据库的账号和密码,以及数据库地址。使用git指令开启apollo。使用git指令关闭apollo。出现登录页面即为成功。.........................原创 2022-08-23 10:30:38 · 744 阅读 · 0 评论 -
RESTful面向资源入门(1)
RESTful面向资源入门1.HTTP状态码种类2.内容协商与数据格式1.在为startup中services.AddControllers(setupAction=> { setupAction.ReturnHttpNotAcceptable = true;//默认为false 如果为false那么所有api请求都会忽略请求的头部,都回复默认的数据结构 //setupAction.OutputFormatters.Add原创 2021-07-12 21:45:11 · 191 阅读 · 0 评论 -
NetCore——自定义全局异常处理
/// 异常消息 ///原创 2022-08-04 15:48:26 · 1291 阅读 · 0 评论 -
深入理解GET请求(1)——关键词搜索
深入理解GET请求使用[FromQuery]与[FromRoute]的区别使用IQueryable接口完成数据库的操作使用关键字参数查询数据使用Route查询数据原创 2021-07-18 21:47:30 · 412 阅读 · 0 评论 -
netcore3.1的网关Ocelot实例
netcore3.1的网关Ocelot实例一、创建一个netcore 空项目(APIGateway网关)添加依赖Install-Package Ocelot ,若是在16.x之后ReRoutes更改为Routes1.1 新建configuration.json文件{ "ReRoutes": [ { "DownstreamPathTemplate": "/api/customers", "DownstreamScheme": "http", "Down原创 2021-10-26 21:57:36 · 337 阅读 · 1 评论 -
JWT原理剖析
JWT原理剖析一.jwt是干什么用的?二.登陆方式1.有状态登陆传统上会使用服务器的session来判断是否登陆,登陆后服务器会创建一个session信息,并吧session保存起来然后把sessionId通过cookie传给前端当某个用户有访问api的时候,sessionid就会包含在http请求中一起发给后端,后端通过sessionid判断是否登陆,然后通过用户的权限判断是否响应请求的资源因为要在服务器中保存用户的session所以是 有状态登陆2.无状态登陆1.使用j原创 2021-08-10 12:45:45 · 133 阅读 · 0 评论 -
netcore——services拓展
以net6为例,当program里面需要配置很多服务和服务所需要的配置,那么program会非常臃肿,且不易于阅读。打开program文件,用法与添加正常service一样。那么需要额外创建一个文件来讲service单独存放。以添加数据库service为例。原创 2022-11-01 18:00:18 · 578 阅读 · 0 评论 -
Jwt启用API授权
Jwt启用API授权1.注入身份验证的服务,启动用户授权的框架1.打开startup文件,注册服务 services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { var secretByte = Encoding.UTF8.GetBytes(Configuration[原创 2021-08-23 17:54:43 · 430 阅读 · 0 评论
分享