- 博客(35)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 关于业务开发的操作时间处理方案
我们可以引入Provider组件,通过Action生命周期控制注入使用类中,而非获取服务器时间或者用户传递的不可信时间来决定业务的发生时间。比如:业务的操作需要两个原子性的操作来完成,那么需要在原子方法入口决定业务操作时间。这样,我们看到用户在2024-01-01 12:12:01支付了订单。比如:某个业务审核属于原子操作,那么需要在审核控制器决定审核时间。判断业务的原子性,在原子性的方法入口做统一的日期获取处理.依照操作的唯一性,单元操作内保持时间统一。保证了单一业务内的时间原子性。
2024-09-23 14:48:22 222
原创 【面向实现】- 在快速交付背景下通过方法结构腐化代码
在代码开发当中,无论使用什么语言,在没有严格秩序的三层项目当中,往往都会重复着代码变屎山的过程,我们亲眼看到自己从0到1的项目随着代码堆叠慢慢变得臃肿,却很难有效的改变现状。从历史规律来看,这似乎是人的问题,没有写好代码,但我们拉高视角,似乎这更是一个开发体系潜移默化的选择,选择了容忍臃肿和泛滥来换取所谓的开发迭代效率和需求功能产出。那么我们必须承认一个事实,优秀的代码往往需要更好的人力来实现,更长的时间来守序,这意味着更高的成本,从一开始这仅仅是一个简单的买单倾向问题。
2024-08-17 11:02:02 324
原创 Vue3安装Electron报错 Command failed 问题解决
【代码】Electron安装报错electron: Command failed 问题解决。
2023-11-20 15:45:41 2269 1
原创 【winui3】轻量笔记本应用
最近闲来无事,发现微软在推出Win11后,为自家UWP推出的全新WinUI3设计控件。乍一看,一股水果味迎面袭来,这怎么看像是UWP&App Desgin的产物?玩了玩,感觉还挺漂亮,于是做了个简单的笔记本。目前已经发布微软商店,感兴趣的可以去玩玩。
2023-01-16 16:49:21 746 1
原创 NetCore-EFCore使用MySql.NetTopologySuite包支持空间类型查询附近的人
我的环境:Abp vNext:5.1.2EFCore:6.0NetCore:6.0一. 引用官方包Pomelo.EntityFrameworkCore.MySqlPomelo.EntityFrameworkCore.MySql.NetTopologySuite二. 在{Obj}.EntityFrameworkCore层更改模块注入Options配置,添加UseNetTopologySuite不使用abp的,在startup的ConfigService依赖注入的地方改options配置
2022-05-05 20:45:48 612
原创 EFCore 数据一致性保证-乐观锁和悲观锁
我们在项目当中,经常因为业务原因需要对数据一致性进行控制,在高并发场景下,更需要使用悲观或乐观锁进行进一步设计。据此目的,了解了一下EFCore现行并发控制策略。默认情况下,EFCore实现了乐观锁控制,在保存数据时会进行一致性校验,分为两种模式:针对现有数据库结构,通过标识[ConcurrencyCheck]来检查数据一致性假如,我们有以下表:public class Goods { public Guid Id { get; set; } [ConcurrencyCheck] pu
2021-09-29 16:44:35 2975
原创 Abp vNext 拓展Ids4-Claims用户信息
首先,实现IProfileService接口,做一个拓展信息的实现类。/// <summary> /// IDS4获取用户信息服务实现 /// </summary> public class YourProfileService : IProfileService { public YourProfileService () { } public async Task GetProfi
2021-06-08 18:32:36 1018
原创 VS2019构建Setup安装包添加系统必备依赖包
首先,我们要找到VS的SDK目录。VS2019的目录位于:C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages下,低版本的VS是在IDE的目录下,搜索关键字Bootstrapper即可。然后,在Packages里新建自己的包目录。接下来,可以从别的包里拷贝以下下面几个文件:zh-CN文件夹 代表当前语言的包配置,如果要支持多语言就创建多个语言的,可以参照其他包的目录。里面有两个文件:Eula.rtf 是当前
2021-05-11 18:06:52 5354 2
原创 NetCore-Serilog 按模块区分日志目录
前段时间,项目有需求,需要将某些模块的日志单独记录文件夹,于是找了一下Serilog的目录配置。如果是按照appsetting来配置,节点内容大概如下:{ "Name": "RollingFile", "Args": { "pathFormat": "Logs/Warning/{Date}.txt", "RestrictedToMinimumLevel": "Warning", "rollingInterv
2021-05-08 13:24:22 3227
原创 Abp vNext之单元测试初探
首先,一个优质的项目,UT是不可或缺的一部分,起先经历的N个项目几乎都是赶功能快步前进式的开发方式,项目质量保证大部分依靠实际使用和手工测试机械点界面来排查,不仅效率低下且很难保证覆盖率等等要求。这些理论,刚开始我其实是不以为然的,我做过很多项目,没有UT也照样能跑,业务运行也没啥问题,但是后面真正开始写UT了,发现自己代码的很多问题,脸上不屑的笑容渐渐消失……So,我们需要来看一下ABP vNext官方文档的UT介绍。Emmm….好吧,没有介绍……那就只能看代码了,先看一下Abp vNex
2021-05-08 13:20:25 597
原创 Abp vNext swagger注释
网上看了一些Abp vNext引用swagger的教程,大致流程都差不多,就是生成每一层对应的xml然后使用IncludeXmlComments方法来引用,后面亲自实践发现有些差异和要点,在此记录一下。基本步骤:右击项目解决方案,属性-生成-输出-勾选XML文档文件,删除路径信息仅保留xml文件名称。例如:xxx.Application.xml。 hostmodule下,AddSwaggerGen内添加以下代码: 1 context.Services.AddSwaggerGen(o.
2021-05-08 13:19:48 798
原创 Abp vNext DTO国际化
之前了解过Abp vNext关于国际化的一些官方文档,但始终还是不知道在DTO类里如何使用Istringlocalizer进行国际化,包括国际化占位符的变量传参,后面在项目源码里翻了半天,发现官方项目好多也都是直接返回英文,后面终于找到下面这段代码。位置:abp-dev\framework\src\Volo.Abp.Ddd.Application.Contracts\Volo\Abp\Application\Dtospublic virtual IEnumerable<ValidationR
2021-05-08 13:19:01 500 1
原创 ABP vNext 拓展短信授权登陆
今天,准备在ABP vNext上拓展一下短信登录,流程很简单:用户请求发送验证码接口,后台生成验证码,然后发送到用户手机,用户收到验证码,使用拓展授权方式SMSGrantType获取令牌,完成授权。首先,关于验证码生成,为了避免生成存储到本地再校验一般采用TOTP加密算法,它是基于时间的一次性密码生成算法,由RFC6238定义。和基于事件的一次性密码生成算法不同HOTP,TOTP是基于时间的,在有效时间过后,针对同一用户所生成的验证码将会发生改变。AspNetCore已经在其TOTP- (...
2021-05-08 13:17:06 1872
原创 Net-行为型设计模式-模板方法模式
说明:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。1.定义抽象类,定义抽象类中的抽象行为virtual表示父类定义某种方法,且实现方法的基本形态。1.子类可以override覆写virtual方法,则调用父类子类对象都将实现子类override方法。2.子类也可以new覆写virtual方法,则调用父类对象和子类对象分别...
2020-04-02 13:32:04 205
原创 C# 结构型设计模式-代理模式
说明:在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象,然后客户端只需要访问代理对象,由代理对象去帮我们去请求目标对象并返回结果给客户端。作用域:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是本电脑中,也可以在另一台电脑中。最典型的例子就是——客户端调用Web服务或WCF服务。虚拟(Virtual)代理:根据需要创...
2020-04-02 13:20:09 159
原创 EF-CodeFirst-外键设置
首先,第一种设置方法,就是在关联子表中设置外键对象属性。我们来看一下DB的外键结构:可以看到,此时CodeFirst自动生成了一个外键名_ID的外键字段与User主表ID做了外键关联,那么,如何指定外键名称呢?于是,我们使用特性ForeigKey指定外键名称为:USERID,如下图:再看一下生成的表结构:一个USERID的外键已经创建好了。关于ForeigKey特性的功能,标记...
2019-12-19 22:51:49 6115
原创 C#-仓储模式-关于上下文的释放
首先,在起初没有使用仓储模式时,本人在使用EF上下文基本都用了using标记,随时使用随时释放,如下所示:using(dbcontext con = new dbcontext()){ con.xxx......;}我们大家哦度知道,EF查询跟踪是存在数据缓存的,如果随时释放将无法利用缓存带来的查询速度提升。同样,EF缓存也面临查询出现脏数据的问题,各有利弊。EF是默认开启数据查询缓...
2019-12-15 16:27:37 1314
原创 CodeFirst-常用特性标识详解
#设置外键PS:当外键属性设置为[Required]时,默认设置级联删除#内置特性```csharppublic class User { /// <summary> /// DatabaseGeneratedOption: /// Computed:在插入或更新行时,数据库将生成值。 /// Ident...
2019-12-10 17:47:16 564 1
原创 C#-WebApi-EF-CodeFirst-构建迁移命令说明
#环境要求Install-Package EntityFramework 必备PS: MYSQL和ORACLE等需要安装对应的数据库Nuget包#构建迁移配置Enable-Migrations参数列表-Auto 在为项目启用自动迁移的情况下构建迁移配置 -ContextTypeName MyContext -迁移目录目录名 为具有多个上下文的项目构建迁移配置 -En...
2019-12-05 15:35:40 621
原创 webform-rdlc报表报错:未能加载文件或程序集Microsoft.SqlServer.Types版本错误的处理方案
今天,在WebForm内使用rdlc报表遇到了如下错误xxxx.rdlc' is invalid. An unexpected error occurred in Report Processing. 未能加载文件或程序集“Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8...
2019-09-11 21:38:15 2250 1
翻译 Observable与Subject
#介绍首先,对象关系上,Subject是Observable的子类,相比拥有了多播的效果,使得多个订阅者订阅的对象数据是共享的,而在它下面又细分了AnonymousSubject, AsyncSubject, BehaviorSubject三个子类,分别用于处理不同场景的业务需求。#Observable和Subject的差异Observable的每个订阅者之间,读取的发布数据是相对各自...
2019-06-02 15:33:01 1233
原创 使用ionic生成apk时遇到的错误:[ERROR] An error occurred while running subprocess cordova
刚开始,一直盯着这句红色的错误看,没注意看上面的报错,网络上的方法都试过了,没有一个管用的,后来发现报错的具体内容。* What went wrong:A problem occurred configuring project ':app'.> Failed to install the following Android SDK packages as some licence...
2019-04-26 16:42:52 16206 2
原创 Socket通讯
今天简单写了一个Net的Socket通讯程序,功能可以获取到目前连接到程序的所有主机,互相保持长连接传递消息,界面如下源码地址:https://github.com/git102347502/socketTest...
2019-03-21 11:27:49 151
转载 Transactions-事务
一. 概念事务是提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。二. 事务的的四大特性,ACIDA:原子性(Atomicity)事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行。这种特性称为原子...
2019-02-24 11:30:01 859 1
原创 Visual studio2017前端项目包管理从Borwer升级到libman
今天打开项目,想使用Bower来管理一下项目的前端包,忽然发现项目内根本没有bower.json,右击也没有管理bower包管理。后来搜索了解了一下,需要在项目主目录下添加.bowerrc文件,文件内容如下{ "registry": "https://registry.bower.io", "directory": "wwwroot/lib"}然后这个时候,右击项目就有...
2019-02-24 11:24:45 1526
原创 NetCore-EFCore-DBfirst-同步数据库生成Model
1.首先,说一下EFCore使用DBfist的基础语法 。dotnet ef dbcontext scaffold "Server=数据库连接地址;Database=数据库名称;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer 后续参数......2.语法中的后续参数说明如下表。 简写 ...
2018-10-22 22:21:32 8750 1
原创 WinForm-DevExpress控件-TreeList-树形框菜单的使用
环境声明:使用控件:DevExpress16.2开发语言:C#开发工具:VS2017开发框架:WinForm#通过绑定数据List<Data>方式来达到树形框显示1.绑定数据格式public class Data{public int ID { get; set; } //数据ID,主键public string Name { ...
2018-07-12 23:35:39 9291
原创 C#-Doubel类型的文本金额转换成人民币
/// <summary> /// 将数字转换成人民币 /// </summary> /// <param name="Value"></param> public static string DoubleToMoney(string Value) { ...
2018-05-25 10:39:47 427
原创 结构型设计模式-装饰器模式
说明:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。实现方法1.新建一个接口pubic abstract 手机(){public abstract print();}2.新建装饰器类...
2018-03-17 15:33:41 491
原创 VSIXInstaller手动安装ODTforVS2017
今天安装ODTforVS2017插件,一直弹出下面这个报错。报错:无法确定操作。必须制定VSIX的安装路径或 /uninstall 命令行参数!解决方案如下1.以管理员启动DOS窗口,切换到VS安装目录,这里我的VS是装在I盘里的。C:\Windows\system32>I: //切换到I盘I:\>cd I:\Progra...
2018-02-28 16:38:42 9085 2
转载 使用WEBAPI连接到ORACLE配置流程
1.引用DLLOracle.ManagedDataAccess.dll Oracle.ManagedDataAccess.EntityFramework.dll 下载地址:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html 2.修改Web.Config<configSections&g...
2018-02-28 15:16:20 3353
翻译 使用WEBAPI连接到MYSQL配置流程
1.需要引用的文档MySql.Data.dllMySql.Data.Entity.EF6.dll1.1注意事项:1.11 MySql.Data.Entity依赖于 MySql.Data,需要保证这两个的版本相同。1.12 EF版本必须高于6.0。2.添加System.data配置<system.data><DbProviderFactories><remove i...
2018-02-28 12:07:41 4570
原创 Winfrom控件之DataGridView
控件名:DataGridViewCS框架:WinFrom编程语言:C#一.常用属性 1.布局 ReadOnly(是否可编辑) AllowUserToAddRows(隐藏底部空行) RowsHeadersVisible(隐藏首列) DataSource(绑定数据源) AutoGenerateColumns(绑定数据源后,不自动生成列) AutoSizeColumnsMode...
2017-10-23 10:55:42 1943
MacOs10.14.6以及VmWare相关插件和使用说明.txt
2019-09-13
SqlServerTypes.rar
2019-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人