Asp.NetCore_EFCore
多层项目中EFCore的使用实体类:
1234567public class Book { public long Id { get ; set; } public string Title { get; set; } public string AuthorName { get; set; } public double Price { get; set; } public DataSetDateTime PubDate { get; set; }}
配置类:
12345internal class BookConfig : IEntityTypeConfiguration<Book> { public void Configure(EntityTypeBuilder<Book> builder) { builder.ToTable("T_Books" ...
Asp.NetCore_配置系统
配置系统默认添加配置提供者ASP.NET CORE默认添加的配置提供者:1)加载现有的IConfiguration2)加载项目根目录下的appsettings.json3)加载项目根目录下的appsettings.{Environment}.json4)当程序运行在开发环境在,程序会加载“用户机密”配置5)加载环境变量中的配置6)加载命令行中的配置
开发、测试、生产环境不同的环境有不同的配置运行环境:ASP.NET Core会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值,推荐值:Development、Staging、Production。读取方法:app.Environment.EnvironmentName、app.Environment.IsDevelopment()……在windows和vs中设置环境变量的方法。
机密信息1、把不方便放到appsetting.json中的机密信息放到一个不在项目中的json文件中。2、在ASP.NET Core项目上单击鼠标右键,选择【管理用户机密】。3、secrets.json文件和项目通过csproj文件中的< ...
日志系统
日志系统官方文档:https://learn.microsoft.com/zh-cn/dotnet/core/extensions/logging?tabs=command-line日志级别:Trace<Debug<Information<Warning<Error<Critical日志提供者(LoggingProvider):把日志输出到控制台、文件、数据库等。对于业务代码只要注入日志对象记录日志即可,具体哪些日志输出到哪里、什么样的格式、是否输出等都有配置或者初始化代码决定。
控制台日志安装:Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Console
1234567891011121314151617181920212223242526272829303132333435363738394041using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;namespace Tes ...
Asp.NetCore_缓存
缓存缓存(Caching)是系统优化中简单又有效的工具,投入小收效大,数据库中的索引等简单有效的优化功能本质上都是缓存。缓存的概念:缓存命中,缓存命中率,缓存数据不一致,多级缓存。
客户端缓存RFC7324是HTTP协议中对缓存进行控制的规范,其中重要的是cache-control这个响应报文头。服务器如果返回cache-control:max-age=60,则表示服务器指示浏览器端“可以缓存这个相应内容60秒”。我们只要给需要进行缓存控制的控制器的操作方法添加ResponseCache特性,ASP.NET Core就会自动添加cache-control报文头。
123456789[Route("[controller]/[action]")] [ApiController] public class TimeController : ControllerBase { [HttpGet] [ResponseCache(Duration = 10)]//缓存这个内容10秒 public Date ...
Asp.NetCore_依赖注入
依赖注入普通写法在ASP.NET Core项目中一般不需要自己创建ServiceCollection、IServiceProvider。在Program.cs的builder.Build()之前向builder.Services中注入。
在Controller中可以通过构造方法注入服务。
1234567891011121314151617181920212223242526//控制器[Route("[controller]/[action]")] [ApiController] public class SumController : ControllerBase { private readonly Value value; public SumController(Value value) { this.value = value; } [HttpGet] public int GetValue() { ...
Asp.NetCore_基本使用
初识ASP.NET CORE Web Api12345678910111213141516171819202122using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;namespace AspTest.Controllers { [Route("api/[controller]")] [ApiController] public class TestController : ControllerBase { [HttpGet] public UserInfoRequest UserInfo() { var UserInfo = new UserInfoRequest(); UserInfo.Email = "abc@123.com"; UserInfo.Name = "Test"; User ...
配置系统
配置系统官方文档:https://learn.microsoft.com/zh-cn/dotnet/core/extensions/configuration.Net配置系统支持丰富的配置源包括文件、注册表、环境变量、命令行、Azure Key Vault等,还可以配置自定义配置源。可以跟踪配置的改变,可以按照优先级覆盖。还支持ini、xml等格式的配置源。还支持在运行时、调试时加载不同的json文件。还内置或第三方支持中心化配置服务器,比如使用Apollo、Nacos等开源服务器,或使用Azure、阿里云等的配置服务
JSON配置安装Microsoft.Extensions.Configuration(配置框架的包)和Microsoft.Extensions.Configuration.Json(读json的包)新建json文件,设置属性如果较新就赋值。config.json:
12345{ "name": "张三", "age": "18", "proxy": ...
单元检测
单元检测当我们要查看某个方法是否有错误,我们可以创建一个专门用来测试的类,用于不调用主程序的情况下,在测试类中检测方法是否符合所期待的那样。这样的行为称为单元检测或单元测试。
单元检测演示一台电脑如果想玩3A游戏的话当然需要一个好的显卡,能玩游戏的显卡就是好显卡,我们可以使用单元检测来判断。主程序:
123456789101112131415161718192021namespace Test { internal class Program { static void Main(string[] args) { IGraphicsCard card = new NVIDIA(); Console.WriteLine(card.Show()); } } public interface IGraphicsCard { string Show(); } public class NVIDIA:IGraph ...
依赖注入
依赖注入官方文档:https://learn.microsoft.com/zh-cn/dotnet/core/extensions/dependency-injection依赖注入的原理是——反射如果想用依赖注入框架需要:先用NuGet下载Microsoft.Extensions.DependencyInjection。使用名称空间using Microsoft.Extensions.DependencyInjection;
依赖注入框架的简单使用123456789101112131415161718internal class Program { static void Main(string[] args) { var sc = new ServiceCollection();//创建容器 sc.AddScoped(typeof(IStudent),typeof(Student));//接口描述,绑定该接口的类型的描述 var sp = sc.BuildServiceProvider ...
反射
对某些程序来说,它们操作的数据不是数字、文本或图形,而是关于程序和程序类型的信息。有关程序及其类型的数据称为元数据,被保存在程序的程序集中。程序在运行时,可以查看其他程序集或本身的元数据。这种行为叫做反射。使用反射要使用System.Reflection命名空间。
Type类blc声明了一个Type抽象类,用来包含类型的特征,使用这个类的对象能获取程序使用的类型信息。Type类成员
获取Type对象实例对象的GetType()方法和typeof()运算符
12345678910111213static void Main(string[] args) { Student std = new Student(); Type type1 = std.GetType(); Type type2 = typeof(Student); Type type3 = typeof(int); Console.WriteLine(type1.Name); Console.Wr ...