EntityFrameworkCore Code First 当中批量自定义列名

在使用.NET CORE 进行 Web 开发的时候会考虑到使用不同数据库的情况,并且在每种数据库建立表结构的时候会采用不同的命名规则。之前的解决方法是使用 [ColumnAttribute] 或者 [TableAttribute] 这种特性来显式标注不同的列名。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 [Table("bas_stock_address")] public class BasStockAddress : FullAuditedEntity<int, User> { /// <summary> /// 集团ID /// </summary> [Column("group_id")] public int?

Linux 下的 Docker 安装与使用

一、安装与配置 1.设置阿里云镜像源 1 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2.安装依赖包 1 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 3.安装 Docker-CE 重建 Yum 缓存。 安装 Docker-CE ,请执行一下命令进行安装: 1 sudo yum install docker-ce 4.启动 Docker-CE 1 2 sudo systemctl enable docker sudo systemctl start docker 5.[可选] 为 Docker 建立用户组 docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。 1. 建立 Docker 用户组 1 sudo groupadd docker 2.添加当前用户到 docker 组 1 sudo usermod -aG docker $USER 6.

ABP 工作单元

ABP在其内部实现了工作单元模式,统一地进行事务与连接管理。 其核心就是通过 Castle 的 Dynamic Proxy 进行动态代理,在组件注册的时候进行拦截器注入,拦截到实现了 Unit Of Work 特性的方法进行操作,在执行完方法之后就会关闭掉工作单元。 一、大致处理流程 1 2 3 4 5 6 7 8 9 10 11 12 13 拦截器初始化=>start: 拦截器初始化 注入UOW特性=>operation: 注入UOW特性方法 Begin=>operation: Begin() realAction=>operation: realAction() 真实业务方法 complete=>operation: complete() 执行完成 dispose=>inputoutput: dispose() 销毁并检测 是否销毁条件=>condition: 是否销毁成功? rollback=>operation: 回退结果 e=>end: 结束 拦截器初始化->注入UOW特性->Begin->realAction->complete->dispose->是否销毁条件 是否销毁条件(yes)->e 是否销毁条件(no)->rollback->e 首先UOW拦截器先被注入到了需要UOW的类当中。 ABP在执行标注了UOW的方法(或者是显示式IUnitOfWorkManager包裹的方法)的时候,UOW拦截器首先以这种方式来执行代码: 1 2 3 A[begin]-->B[realaction_method] B-->C[complete method] C-->D[dispose method] UOW拦截器是通过using这种方式调用IUnitOfWork的某个具体实现,这就确保begin 和 dispose也总是会被执行的。Complete()方法不一定会被执行,比如在complete方法被调用前方法的执行产生了异常。 当执行一连串的操作时(A方法->B方法->C方法,假设这三个方法都标注了UnitOfWork特性),ABP在执行A方法前会调用Begin方法创建整个过程中唯一的IUnitOfWork对象,该对象会启动.NET事务。在执行到B,C方法只会创建InnerUnitOfWorkCompleteHandle。 InnerUnitOfWorkCompleteHandle和IUnitOfWork对象的差异在于它不会创建真实的事务。但ABP会调用其complete,以告知ABP其对应的方法以成功完成,可以提交事务。 事务可以回滚的关键关键在于IUnitOfWork对象在被dispose时候会检查complete方法有没有被执行,没有的话就认为这个UOW标注的方法没有顺利完成,从而导致事务的回滚操作。 整个事务的提交是通过第一个UOW(也是唯一个)的complete方法执行时提交的。 二、文件结构说明 文件名称 说明 UnitOfWorkRegistrar 注册拦截器,实现两种默认的UnitOfWork UnitOfWorkInterceptor Unit of Work拦截器,实现以AOP的方式进行注入单元控制 IUnitOfWorkManager UnitOfWork管理对象 UnitOfWorkManager IUnitOfWorkManager默认实现 ICurrentUnitOfWorkProvider 当前UnitOfWork管理对象 CallContextCurrentUnitOfWorkProvider ICurrentUnitOfWorkProvider默认实现 IUnitOfWork 工作单元对象(Begin、SaveChanges、Complete、Dispose) UnitOfWorkBase IUnitOfWork抽象实现类,封装实际操作的前后置操作及异常处理 IActiveUnitOfWork IUnitOfWork操作对象,不包含Begin与Complete操作 IUnitOfWorkCompleteHandle 工作单元完成对象,用于实现继承工作单元功能 InnerUnitOfWorkCompleteHandle IUnitOfWorkCompleteHandle实现之一,用于继承外部工作单元 IUnitOfWorkDefaultOptions UnitOfWork默认设置 UnitOfWorkDefaultOptions IUnitOfWorkDefaultOptions默认实现 UnitOfWorkOptions UnitOfWork配置对象 UnitOfWorkAttribute 标记工作单元的特性 UnitOfWorkFailedEventArgs UnitOfWork的Failed事件参数 UnitOfWorkHelper 工具类 AbpDataFilters 数据过滤相关 DataFilterConfiguration 数据过滤相关 三、注册工作单元 Abp在AbpBootstrapper的private void AddInterceptorRegistrars()方法当中对UnitOfWorkRegistrar 调用了其初始化操作。 初始化操作代码如下:

ABP 领域事件

ABP领域事件/事件总线 一、文件结构 文件名称 路径 描述 IEventData.cs \Abp\Events\Bus\ 事件数据抽象接口 EventData.cs \Abp\Events\Bus\ 事件数据基本类实现 EventBusInstall.cs \Abp\Events\Bus\ 事件总线注册类 IEventBus.cs \Abp\Events\Bus\ 事件总线接口 EventBus.cs \Abp\Events\Bus\ 事件总线实现 IEventDataWithInheritableGenericArgument.cs \Abp\Events\Bus\ D6 NullEventBus.cs \Abp\Events\Bus\ D7 IEventHandler.cs \Abp\Events\Bus\Handler D7 IEventHandlerOfTEventData.cs \Abp\Events\Bus\Handler D8 ActionEventHandler.cs \Abp\Events\Bus\Hanlder\Internals D9 DomainEventEntry.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangedEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangeEntry.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangeEventHelper.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangeReport.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangeType.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityChangingEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityCreatedEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityCreatingEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityDeletedEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityDeletingEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件. EntityEventData.cs \Abp\Events\Bus\Entities\ 数据库实体相关事件.

OneDriver 指定文件夹同步

OneDriver 本身没有提供对指定文件夹进行监控并自动同步的功能,需要通过 mklink 命令来创建目标文件夹与 OneDriver 映射文件夹的符号连接才行。 具体命令如下: mklink /d [ONEDRIVER映射目录] [需监控同步的本地文件夹] 例如,我需要对 E盘 的 Picture 文件夹进行同步,则输入一下命令即可: 1 mklink /d D:\OneDrive\Picture E:\Picture
Built with Hugo
主题 StackJimmy 设计