.NET Core

[开源] .Net ORM 访问 人大金仓数据库

∥☆過路亽.° 提交于 2020-08-13 09:55:20
前言 京人大金仓信息技术股份有限公司(以下简称“人大金仓”)是具有自主知识产权的国产数据管理软件与服务提供商。人大金仓由中国人民大学一批最早在国内开展数据库教学、科研、开发的专家于1999年发起创立,先后承担了国家“863”、“核高基”等重大专项,研发出了具有国际先进水平的大型通用数据库产品。2018年,人大金仓申报的“数据库管理系统核心技术的创新与金仓数据库产业化”项目荣获2018年度国家科学技术进步二等奖,产学研的融合进一步助力国家信息化建设。 随着华为、中兴事务,国产数据库市场相信是未来是趋势走向,纵观 .net core 整个圈子对国产人大金仓数据库的支持几乎为 0,今天我们使用 FreeSql ORM 来体验国产人大金仓数据库(虽然是拿pgsql源码修改的)。 整体来讲,人大金仓对 Oracle 语法有着 90% 的兼容性,但还有一些细节需要注意,FreeSql 对此做了优化进行了完美支持。 1、安装环境 数据库服务器:KingbaseES V8 下载地址: https://www.kingbase.com.cn/index/service/c_id/212.html .NET版本:.net core 3.1 下载地址: https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 开发机器

手把手撸套框架-ORM框架的选择

若如初见. 提交于 2020-08-13 09:02:50
目录 一,为什么选择SqlSugar? 在.net core ORM框架中,能选择的方案其实有很多,包括以下方案: 1,EF-Core 2,Dapper 3,FreeSql 4,SqlSugar 为什么最后选择了Sqlsugar 呢? 一个个来说, 首先是: EF-core 。 EF-core 一开始想法也是担心性能问题,大概在7年前 有尝试过一次EF,深深被EF的性能所折服 实在是太慢了,当然做一些小型项目,EF当然是体现不出性能差距的,但是谁又知道自己的“小项目”哪天不会随着 业务的发展变成“大项目” 呢? 所以,一开始对EF 以及EF-Core 没有好感,不过后来看了,EF-Core的官网介绍, 感观上发生了很大的变化, 总的来说就是: EF 和 EF-Core 完全是两个东西。 更准确的说是:.net Core 和 .net Famework 完全是两个东西。 这么说吧, .net Core在性能上完全不怂 java,go,python,php 任何一种语言,再说.net 性能不好的,可以啪啪打脸了。 但是,我还是首先淘汰了,EF-Core。原因是,查百度各种ORM都拿EF-core 做性能测试,可以参考以下连接: 参考: https://www.cnblogs.com/kellynic/p/10557882.html 虽然,EF-Core 性能跟EF 不能同日而语,但是

【翻译】.NET 5中的性能改进

笑着哭i 提交于 2020-08-13 09:01:21
【翻译】.NET 5中的性能改进 在.NET Core之前的版本中,其实已经在博客中介绍了在该版本中发现的重大性能改进。 从.NET Core 2.0到.NET Core 2.1到.NET Core 3.0的每一篇文章,发现 谈论越来越多的东西。 然而有趣的是,每次都想知道下一次是否有足够的意义的改进以保证再发表一篇文章。 .NET 5已经实现了许多性能改进,尽管直到今年秋天才计划发布最终版本,并且到那时很有可能会有更多的改进,但是还要强调一下,现在已提供的改进。 在这篇文章中,重点介绍约250个PR,这些请求为整个.NET 5的性能提升做出了巨大贡献。 安装 Benchmark.NET现在是衡量.NET代码性能的规范工具,可轻松分析代码段的吞吐量和分配。 因此,本文中大部分示例都是使用使用该工具编写的微基准来衡量的。首先创建了一个目录,然后使用dotnet工具对其进行了扩展: mkdir Benchmarks cd Benchmarks dotnet new console 生成的Benchmarks.csproj的内容扩展为如下所示: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>

基于 abp vNext 和 .NET Core 开发博客项目

别说谁变了你拦得住时间么 提交于 2020-08-13 08:32:43
上一篇文章( https://www.cnblogs.com/meowv/p/12896177.html )已经成功创建了博客项目,但是abp默认给我们引用了许多项目中用不到的组件。 本篇文章将给项目进行瘦身,删掉对我们来说暂时用不到的组件。讲解各个模块之间的关系,写一个Hello World,让其成功运行起来。 给项目瘦身 Meowv.Blog.HttpApi.Hosting Meowv.Blog.HttpApi.Hosting 相当于一个web项目,但这里主要依赖于 Meowv.Blog.HttpApi 模块,用来暴露我们的API的。 删掉 Meowv.Blog.HttpApi.Hosting 项目中abp自己生成的文件和文件夹,只留下 Program.cs 和 Startup.cs 两个类。 在abp中,每个模块都应该定义一个模块类,派生自 AbpModule ,那么就添加一个模块类 MeowvBlogHttpApiHostingModule.cs AbpModule 类中可以做 配置服务前和后的操作,应用程序初始化,应用程序初始化前和后,应用程序关闭和模块依赖等一系列操作,详看, https://docs.abp.io/en/abp/latest/Module-Development-Basics 为了方便,在这里直接集成Autofac,来替换官方依赖注入,详看,

.NET Core 选项模式【Options】的使用

别来无恙 提交于 2020-08-13 06:51:38
ASP.NET Core引入了Options模式,使用类来表示相关的设置组。简单的来说,就是用强类型的类来表达配置项,这带来了很多好处。利用了系统的依赖注入,并且还可以利用配置系统。它使我们可以采用依赖注入的方法直接使用绑定的一个POCO对象,这个POCO对象就叫做Options对象。也可以叫做配置对象。 以下大多内容来自官方文档,我只是个翻译官或者叫搬运工吧! 引入Options扩展包 PM>Package-install Microsoft.Extensions.Options 绑定分层配置 在appsetting.json文件增加如下配置 "Position": { "Title": "Editor", "Name": "Joe Smith" } 创建以下 PositionOptions 类: public class PositionOptions { public const string Position = "Position"; public string Title { get; set; } public string Name { get; set; } } 选项类: 必须是包含公共无参数构造函数的非抽象类。 类型的所有公共读写属性都已绑定。 不会绑定字段。 在上面的代码中,Position 未绑定。 由于使用了 Position 属性

ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

爱⌒轻易说出口 提交于 2020-08-13 06:41:49
前言:   本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例。关于ASP.NET Core MVC+EF操作MsSQL Server详情请参考官方文档( https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/?view=aspnetcore-3.1 )。 示例实现功能预览: 博客实例源码下载地址: https://github.com/YSGStudyHards/ASP.NET-Core-MVC-Layui-EF-Core-CRUD_Sample 一、创建ASP.NET Core Web应用程序: 注意,本章节主要以APS.NET Core 3.1版本作为博客的样式实例! 二、添加EF Core NuGet包:   若要在项目中使用EF Core操作MySQL数据库,需要安装相应的数据库驱动包。 本章教程主要使用 MySQL数据库,所以我们需要安装相关驱动包MySql.Data.EntityFrameworkCore。 安装方式: 点击工具=>NuGet包管理器=>程序包管理器控制台输入以下命令: Install-Package MySql.Data

.net core微服务——gRPC(下)

心不动则不痛 提交于 2020-08-13 05:28:26
序 上一篇博客把grpc的概念说了个大概,介绍了proto的数据类型,基本语法,也写了个小demo,是不是没那么难? 今天要从理论到实际,写两个微服务,并利用grpc完成两者之间的通信。只是作为demo写的话会十分简单,毕竟理解为主。 服务端 首先要拿出之前写好的proto文件,然后修改两个属性: Build Action => Protobuf compiler gRpc Stub Classes => Server only 如图: 当然也可以在项目文件里看到它: 然后重新生成项目 ,会自动根据proto文件生成server端的文件。 引用 经过刚才,已经生成了对应的服务,我们可以直接在代码里调用。 这是之前写好的proto: syntax = " proto3 " ; option csharp_namespace = " gRPCApiDemo.Protos " ; package Demo; service MyMath{ rpc MathAdd (AddRequest) returns (AddRespones) {} } message AddRequest{ int32 a = 1 ; int32 b = 2 ; } message AddRespones{ int32 a = 1 ; } 生成以后,会有一个MyMath.MyMathBase这个类,我们来继承一下:

实时web应用方案——SignalR(.net core)

穿精又带淫゛_ 提交于 2020-08-13 04:57:31
何为实时 先从理论上解释一下两者的区别。 大多数传统的web应用是这样的:客户端发起http请求到服务端,服务端返回对应的结果。像这样: 也就是说,传统的web应用都是客户端主动发起请求到服务端。 那么实时web应用呢?它不需要主动发起请求,服务端可以主动推送信息到客户端。 举栗子的话,实时聊天工具、web游戏等都可以算是实时应用。 什么是SignalR 如果想做一个实时应用,最好用web socket。很早以前我也写过web socket的实现方式,但不够全面,这里再补上一篇。 来说说signalR,它是一款开源的实时框架,可以使用三种方式实现通信(long polling、server sent events、web socket)。它很好的整合了底层技术,让我们可以不用关注底层技术实现而把精力聚焦在业务实现上。一个完整的signalR包括客户端和服务端,服务端支持net core/net framework,还支持大部分客户端,比如浏览器和桌面应用。 回落机制 为了兼容不同浏览器(客户端)和服务端,signalR采用了回落机制,使得它可以根据情况协商使用不同的底层传输方式。假如浏览器不支持web socket,就自动降级使用sse,再不行就long polling。当然,也可以禁用这种机制,指定其中一种。 三种通信方式 long polling(长轮询)

龙芯团队完成CoreCLR MIPS64移植,已在github开源

走远了吗. 提交于 2020-08-13 04:46:23
国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为了自己的利益打压使用.NET技术的公司,我今天写这篇文章就是想通过龙芯团队的行动告诉更多人一起来推动.NET技术在中国的发展。希望龙芯厂商、支持龙芯的国产操作系统厂商能高度重视这个问题,主动加入 .Net Core 社区,加入.NET基金会,积极贡献代码,尽快做好适配工作。 龙芯团队一直在做net core的mips64移植工作,2020年6月18日完成了里程碑性的工作,在.NET Core 3.1分支上完成了MIPS64 的移植工作,目前已经在github上开源,开源地址: https://github.com/gsvm/coreclr 。具体说明可以参见 https://github.com/dotnet/runtime/issues/38069 。 龙芯团队正在做移植后的测试工作,已经完成了 9500 多项测试,ASP.NET Core示例程序 FlightFinder 已经可以在MIPS64 上正常运行,具体可以参看 https://github.com/dotnet/runtime/issues/4234 。 龙芯团队还在github上面为龙芯.NET 建立了一个仓库

api.versioning 版本控制 自动识别最高版本

青春壹個敷衍的年華 提交于 2020-08-13 04:10:00
Microsoft.AspNetCore.Mvc.Versioning //引入程序集 .net core 下面api的版本控制作用不需要多说,可以查阅 https://www.cnblogs.com/dc20181010/p/11313738.html 普通的版本控制一般是通过链接、header此类方法进行控制,对ApiVersionReader进行设置,例如 services.AddApiVersioning(o => { //o.ReportApiVersions = true ; // 返回版本可使用的版本 o.ApiVersionReader = ApiVersionReader.Combine( new HeaderApiVersionReader( " api-version " ), new QueryStringApiVersionReader( " api-version " ));//通过 Header或QueryString 进行传值来判断api的版本 //o.DefaultApiVersion = new ApiVersion( 1 , 0 ); // 默认版本号 }); 或者使用 https://www.cnblogs.com/tdfblog/p/asp-net-core-api-versioning.html 这种方式