OsharpNS轻量级.net core快速开发框架简明入门教程

教程目录

  1. 从零开始启动Osharp

    1.1. 使用OsharpNS项目模板创建项目

    1.2. 配置数据库连接串并启动项目

    1.3. OsharpNS.Swagger使用实例(登录和授权)

    1.4. Angular6的前端项目启动

  2. Osharp代码生成器的使用

    2.1 生成器的使用

    2.2 生成代码详解(如何自己实现业务功能)

  3. Osharp部分模块使用

    3.1 Osharp.Redis使用

    3.2 Osharp.Hangfire使用

    3.3 Osharp.Permissions使用

  4. Osharp深度学习和使用

    4.1 切换数据库(从SqlServer改为MySql)

    4.2 多上下文配置(多个数据库的使用)

    4.3. 自定义模块的定义(Senparc.Weixin的使用)

    4.4. 继续学习中....

OsharpNS官方资源

项目地址:https://github.com/i66soft/osharp-ns20

演示地址:https://www.osharp.org 直接使用QQ登录可以查看效果

文档地址:https://docs.osharp.org 正在完善中....

发布博客:https://www.cnblogs.com/guomingfeng/p/osharpns-publish.html 大神看这个文档应该就能跑起来,从零开始启动Osharp基于此文档完成

VS生成器插件:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp

官方交流QQ群:85895249

多上下文配置(多个数据库的使用)

  1. 项目CanDoo.Test.Core通过Nuget添加对包OsharpNS的引用

  2. 配置文件appsettings.Development.json中添加OSharp:DbContexts:MySqlAudit连接参数

"MySqlAudit": {
"DbContextTypeName": "CanDoo.Test.Core.Entity.MySqlAuditDbContext,OSharp.EntityFrameworkCore",//这里要注意下
"ConnectionString": "Server=localhost;Port=3306;UserId=root;Password=******;Database=CanDoo.Test.Audit;charset='utf8';Allow User Variables=True",
"DatabaseType": "MySql",
"LazyLoadingProxiesEnabled": true,
"AuditEntityEnabled": true,
"AutoMigrationEnabled": true
}
  1. 新建CanDoo.Test.Core.Entity.MySqlAuditDbContext上下文
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using OSharp.Entity; namespace CanDoo.Test.Core.Entity
{
public class MySqlAuditDbContext : DbContextBase
{
public MySqlAuditDbContext(DbContextOptions options, IEntityManager entityManager, IServiceProvider serviceProvider) : base(options, entityManager, serviceProvider)
{ }
}
}
  1. 创建CanDoo.Test.Web.Startups.MySqlAuditMigrationPack迁移模块
using System;
using OSharp.Entity;
using OSharp.Entity.MySql;
using CanDoo.Test.Core.Entity;
using CanDoo.Test.Web.Startups; namespace CanDoo.Test.Web.Startups
{
/// <summary>
/// MySqlAudit迁移模块
/// </summary>
public class MySqlAuditMigrationPack : MigrationPackBase<MySqlAuditDbContext>
{
/// <summary>
/// 获取 模块启动顺序,模块启动的顺序先按级别启动,级别内部再按此顺序启动,
/// 级别默认为0,表示无依赖,需要在同级别有依赖顺序的时候,再重写为>0的顺序值
/// </summary>
public override int Order => 2; protected override DatabaseType DatabaseType { get; } = DatabaseType.MySql; protected override MySqlAuditDbContext CreateDbContext(IServiceProvider scopedProvider)
{
return new MySqlAuditDesignTimeDbContextFactory(scopedProvider).CreateDbContext(new string[0]);
} //针对多库连接的,需要在EntityConfiguration部分增加以下代码,指定DbContext
//public override Type DbContextType { get; } = typeof(MySqlAuditDbContext);
}
}
using System;
using System.Reflection; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using OSharp.Core.Options;
using OSharp.Data;
using OSharp.Entity;
using OSharp.Exceptions;
using OSharp.Extensions;
using OSharp.Reflection;
using CanDoo.Test.Core.Entity; namespace CanDoo.Test.Web.Startups
{
public class MySqlAuditDesignTimeDbContextFactory : DesignTimeDbContextFactoryBase<MySqlAuditDbContext>
{
private readonly IServiceProvider _serviceProvider; public MySqlAuditDesignTimeDbContextFactory()
{ } public MySqlAuditDesignTimeDbContextFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
} public override string GetConnectionString()
{
if (_serviceProvider == null)
{
IConfiguration configuration = Singleton<IConfiguration>.Instance;
string str = configuration["OSharp:DbContexts:MySqlAudit:ConnectionString"]; //这里是配置节点的信息 记得修改
return str;
}
OsharpOptions options = _serviceProvider.GetOSharpOptions();
OsharpDbContextOptions contextOptions = options.GetDbContextOptions(typeof(DefaultDbContext));
if (contextOptions == null)
{
throw new OsharpException($"上下文“{typeof(MySqlAuditDbContext)}”的配置信息不存在");
}
return contextOptions.ConnectionString;
} public override IEntityManager GetEntityManager()
{
if (_serviceProvider != null)
{
return _serviceProvider.GetService<IEntityManager>();
}
IEntityConfigurationTypeFinder typeFinder = new EntityConfigurationTypeFinder(new AppDomainAllAssemblyFinder());
IEntityManager entityManager = new EntityManager(typeFinder);
entityManager.Initialize();
return entityManager;
} public override bool LazyLoadingProxiesEnabled()
{
if (_serviceProvider == null)
{
IConfiguration configuration = Singleton<IConfiguration>.Instance;
return configuration["OSharp:DbContexts:MySqlAudit:LazyLoadingProxiesEnabled"].CastTo(false); //这里是配置节点的信息 记得修改
}
OsharpOptions options = _serviceProvider.GetOSharpOptions();
OsharpDbContextOptions contextOptions = options.GetDbContextOptions(typeof(DefaultDbContext));
if (contextOptions == null)
{
throw new OsharpException($"上下文“{typeof(MySqlAuditDbContext)}”的配置信息不存在");
} return contextOptions.LazyLoadingProxiesEnabled;
} public override DbContextOptionsBuilder UseSql(DbContextOptionsBuilder builder, string connString)
{
string entryAssemblyName = Assembly.GetExecutingAssembly().GetName().Name;
Console.WriteLine($"entryAssemblyName: {entryAssemblyName}");
return builder.UseMySql(connString, b => b.MigrationsAssembly(entryAssemblyName));
}
}
}
  1. 审计功能相关的表使用新的上下文,CanDoo.Test.EntityConfiguration.Systems中Audit开头的3个文件都增加以下配置代码,指定使用MySqlAuditDbContext
public override Type DbContextType { get; } = typeof(MySqlAuditDbContext); //新增此行代码 指定使用MySqlAuditDbContext 未指定的还是使用DefaultDbContext
using System;
using System.Collections.Generic;
using System.Text;
using CanDoo.Test.Core.Entity;
using CanDoo.Test.Systems.Entities;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using OSharp.Entity; namespace CanDoo.Test.EntityConfiguration.Systems
{
public class AuditPropertyConfiguration : EntityTypeConfigurationBase<AuditProperty, Guid>
{
public override Type DbContextType { get; } = typeof(MySqlAuditDbContext); //新增此行代码 指定使用MySqlAuditDbContext 未指定的还是使用DefaultDbContext /// <summary>
/// 重写以实现实体类型各个属性的数据库配置
/// </summary>
/// <param name="builder">实体类型创建器</param>
public override void Configure(EntityTypeBuilder<AuditProperty> builder)
{
builder.HasIndex(m => m.AuditEntityId);
builder.HasOne(m => m.AuditEntity).WithMany(n => n.Properties).HasForeignKey(m => m.AuditEntityId);
}
}
}
  1. 在程序包管理控制台中执行Add-Migration -Context MySqlAuditDbContext newDbContext,创建迁移脚本,因系统中存在2个DbContext,所以需要指定上下文-Context MySqlAuditDbContext

  2. 在程序包管理控制台中执行update-database -Context MySqlAuditDbContext

  3. 至此,数据库中新生成了一个库,库中包含用于审计功能的三张表

OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)的更多相关文章

  1. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  2. OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  3. OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  4. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  5. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  6. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Permissions使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  7. OsharpNS轻量级.net core快速开发框架简明入门教程-切换数据库(从SqlServer改为MySql)

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  8. 【开源】OSharpNS,轻量级.net core快速开发框架发布

    OSharpNS简介 OSharp Framework with .NetStandard2.0(OSharpNS)是OSharp的以.NetStandard2.0为目标框架,在AspNetCore的 ...

  9. [开源]OSharpNS - .net core 快速开发框架 - 快速开始

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

随机推荐

  1. mysql-5.7.23-winx64 解压版详细安装教程

    1.下载解压版: 2.配置环境变量 (1)新建MYSQL_HOME变量,并配置值为: C:\softwaretool\mysql-5.7.23-winx64 计算机→属性→高级系统设置→高级→环境变量 ...

  2. mybatis批量更新出现he error occurred while setting parameters

    当你更新一条时,不会发生问题,但是执行多条就出现了错误原因是mysql 配置jdbc:driver 应该添加&allowMultiQueries=trueurl:jdbc:mysql://lo ...

  3. WPF --TextBox--圆角、水印、带单位

    <SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/> <Sol ...

  4. ADO.NET中的5个主要对象

    1.Connection:主要是开启程序和数据库之间的连接.没有利用连接对象将数据库打开,是无法从数据库中取得数据的. Close和Dispose的区别,Close以后还可以Open,Dispose以 ...

  5. Windows Service 服务搭配FluentScheduler实现定时任务调度

    Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...

  6. Python 电子邮件

    从一台计算机编写邮件到对方收到邮件.假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com 我们在本地的软件上写好邮件,点击发送,邮件就发送出去了,这些电 ...

  7. Java学习——String,StringBuffer和StringBuilder

    Java学习——String,StringBuffer和StringBuilder 摘要:本文主要介绍了String字符串在内存中的存储情况,以及StringBuffer和StringBuilder的 ...

  8. c# Hashtable Synchronized vs SyncRoot

    Synchronized vs SyncRoot 我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot实例方法,他们 ...

  9. 搞NDK开发

    1.哪些场景下要用到NDK开发? 跨平台的库,如FFmpeg, skip,weex, 加固,防逆向 签名校验 图片压缩 音视频解码 OpenGL ES 高级特效 热修复 andfix 人脸识别 fac ...

  10. Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem【转】

    转自:https://blog.csdn.net/gatieme/article/details/50964903 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...