学更好的别人,
做更好的自己。
——《微卡智享》
本文长度为2845字,预计阅读6分钟
前言
微信的,net5也发布了一个多月了,正好刚出差回来,公司里展厅的设备需要做一个模拟的场景数据,借这个机会就直接用,net5做开发,现在也内部布置使用着,这篇就大概讲一下使用.net5的过程中遇到的情况,个别问题会拿出单篇来说。
.net5初体验
微卡智享
其实做的这个程序也挺简单的,基本就是一个webapi,然后加入的定时每天模拟产生新的数据插入到数据库中。
使用的包
Quartz:定时任务。这个在《项目实战|C#Socket通讯方式改造(二)--利用Quartz实现定时任务处理》中有介绍过,不过在.net5或是.net core中使用和.net Framework中有点差别,我会单独再开一篇说一下。
SqlSugar:数据库的ORM,以前的文章中有专门介绍过这个的使用,我觉得挺不错的,并且有个项目生产环境中也用到了,使用的也很稳定,.net core中也在专门的Nuget包,这个就不再多说了。
Log4Net:记录日志,这个在.net core的使用中网上有很多,和.net 5使用方式是一样的。
Configuration.Json:读取配置文件,在.net framework的项目中基本都使用读取.config文件,当然我个人更习惯使用ini的文件。而在.net 5创建的项目中配置文件改为了appsettings.json,即然是用新的,所以项目中也使用了读取appsettings,觉得还是挺不错的。
使用的总结
最让我觉得不错的是创建的.net5的项目自动集成了Swagger中间件了,做Api的同学应该会很喜欢 ,调试非常的简单。
调试运行的时候默认就启动了这个UI界面
点击后可以直接看到API调用返回的值,也可以直接设置断点进行调试。
项目中也重新使用了Linq,其实直接用SqlSugar从数据库里取数也是可以的,但是不想多次进行数据库操作,所以改用了Linq还实现分组求和的查询,列下代码,后面也会单独讲一下这个的使用方法和场景。
/// <summary>
/// 根据医嘱单生成补药数据
/// </summary>
/// <param name="orderno"></param>
/// <returns></returns>
public static List<Replenish_Info_SPD> getAutoReplenishFromPicks(string orderno, List<Pick_Info> pick_Infos)
{
//1.获取药品信息数据
List<Drugs> drugs = DrugInfoApi.getDrugs();
//2.生成补药单数据
List<Replenish_Info_SPD> createlist = (from a in pick_Infos
from b in drugs
where a.gcode == b.gcode
group a by new { a.gcode, b.gname }
into item
select new Replenish_Info_SPD
{
no1 = orderno,
gcode = item.Key.gcode,
gname = item.Key.gname,
qty = item.Sum(a => a.ACTUAL_SHIPPED_QUANTITY)
}).ToList();
return createlist;
}
除了上面这些掌握的东西外,项目做完发布的时候遇到了让我最头疼的问题,自己机器测试的都没什么问题,但是在服务器上发布真是搞了我好久,当然也是因为服务的操作系统也老了一点(win2008),整个项目发布成功大概花了我三天时间才解决。关于.net 5或是.net core在win2008发布我也会详细整理一篇文章出来。
一些碎碎念完了后,就该说一下正题了,这篇主要就是说一下Configuration.Json的使用,让我们配置文件直接使用项目自带的appsetting.json即可。
Configuration.Json使用
01
安装Nuget包
在管理Nuget包中搜索到Microsoft.Extensions.Configuration.Json进行安装。
02
配置startup.cs
在Startup文件里面定义了IConfiguration接口,然后构造函数中加入为接口IConfiguration的参数。
03
设置读取json配置的类
新建了一个ConfigHelper的类,用于读取Json的配置,代码如下:
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace MedicalPaltform.Utils
{
/// <summary>
/// 获取appsettings.json参数
/// </summary>
public class ConfigHelper
{
private static IConfiguration _configuration;
static ConfigHelper()
{
//在当前目录或者根目录中寻找appsettings.json文件
var fileName = "appsettings.json";
var directory = AppContext.BaseDirectory;
directory = directory.Replace("\\", "/");
var filePath = $"{directory}/{fileName}";
if (!File.Exists(filePath))
{
var length = directory.IndexOf("/bin");
filePath = $"{directory.Substring(0, length)}/{fileName}";
}
var builder = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true);
_configuration = builder.Build();
}
//获取值
public static string GetSectionValue(string key)
{
return _configuration.GetSection(key).Value;
}
}
}
04
读取appsettings.json配置
appsettings.json中设置了数据库的参数配置,读取的方式就是直接调用
//读取SQL的各个参数
string server = ConfigHelper.GetSectionValue("Znyg:SrvName");
string database = ConfigHelper.GetSectionValue("Znyg:DbName");
string uid = ConfigHelper.GetSectionValue("Znyg:UserId");
string pwd = ConfigHelper.GetSectionValue("Znyg:UserPsw");
可以看到上图中这几个参数的属性都是放到了Znyg的下面,要读取的时候每一级里面加入:即可。
这样就可以实现appsettings.json的配置参数读取了。
完
扫描二维码
获取更多精彩
微卡智享
「 往期文章 」
Android CameraX NDK OpenCV(二)-- 实现Dnn人脸检测