OsharpNS轻量级.net core快速开发框架简明入门教程
教程目录
*
从零开始启动Osharp
1.1. 使用OsharpNS项目模板创建项目 <https://www.cnblogs.com/candoo/p/10773735.html#1>
1.2. 配置数据库连接串并启动项目 <https://www.cnblogs.com/candoo/p/10773735.html#2>
1.3. OsharpNS.Swagger使用实例(登录和授权)
<https://www.cnblogs.com/candoo/p/10773735.html#3>
1.4. Angular6的前端项目启动 <https://www.cnblogs.com/candoo/p/10773735.html#4>
*
Osharp代码生成器的使用
2.1 生成器的使用 <https://www.cnblogs.com/candoo/p/10778631.html>
2.2 生成代码详解(如何自己实现业务功能)
*
Osharp部分模块使用
3.1 Osharp.Redis使用
3.2 Osharp.Hangfire使用
3.3 Osharp.Permissions使用
*
Osharp深度学习和使用
4.1 切换数据库(从SqlServer改为MySql)
4.2 多上下文配置(多个数据库的使用)
4.3. 自定义模块的定义(Senparc.Weixin的使用)
4.4. 继续学习中....
Osharp代码生成器的使用
目录
*
下载并安装生成器插件 <https://www.cnblogs.com/candoo/p/10778631.html#1>
*
配置项目字段信息 <https://www.cnblogs.com/candoo/p/10778631.html#2>
*
多对一关系的配置 <https://www.cnblogs.com/candoo/p/10778631.html#3>
*
代码生成并查看效果 <https://www.cnblogs.com/candoo/p/10778631.html#4>
*
示例代码配置文件下载
<https://files.cnblogs.com/files/candoo/Osharp%E6%B5%8B%E8%AF%95%28CanDoo.Test%29.rar>
下载并安装生成器插件 <>
*
生成器在线下载地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
<https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp>
*
也可以通过VS2017菜单栏工具-扩展和更新,检索Osharp进行插件的安装
配置项目字段信息 <>
* 通过菜单运行Osharp代码生成器,启动之后直接全屏
*
生成器使用流程
从生成器界面上可以看到,生成器包括项目信息、项目模块列表、模块实体列表、外键配置、实体属性列表
配置流程:
*
配置项目信息:对项目整体信息进行配置
特别注意:在配置项目信息时,注意对命名空间前缀的配置,以下图解决方案为例,命名空间前缀就应该填写CanDoo.Test
,否则生成的时候会提示识别Osharp项目失败,影响生成
*
配置项目模块:一个系统往往有多个模块组成,本示例中配置两个模块
代码名称:生成后对应模块的命名空间和文件夹
显示名称:模块的中文含义,会体现在功能模块的名字上
*
配置模块实体:通过点击对应的项目模块进入模块的实体配置
代码名称:实体名称
显示名称:实体的中文名字
主键类型:表的主键类型,一般是int吧,根据实际选择
增:控制此实体是否生成新增的API,接口,实现
改:控制此实体是否生成编辑的API,接口,实现
删:控制此实体是否生成删除的API,接口,实现
数据权限:没折腾,不知道怎么用
锁定:生成IsLocked字段,具体的实现得自己实现
软删除:生成DeletedTime字段,用于标识删除时间
创建时间:生成创建时间
创建审计:生成创建时间,创建人Id字段 (包含前面的创建时间)
更新审计:生成更新时间,更新人Id字段
外键 按钮:点击进入外键配置
*
配置实体属性:
代码名称:实体的属性
显示名称:实体的注释
属性类型全名:实体的数据类型,特别注意:如果是实体集合,直接使用ICollection<>即可,如果是关联特定实体,比如关联User,需要填写User
只读:这个应该是生成界面时使用的属性
排序:这个应该是生成界面时使用的属性
编辑:这个应该是生成界面时使用的属性
过滤:这个应该是生成界面时使用的属性
必填:生成实体的时候会增加[IsRequired]属性
最小长度:这个应该是生成界面时使用的属性
最大长度:这个应该是生成界面时使用的属性
最小值:这个应该是生成界面时使用的属性
最大值:这个应该是生成界面时使用的属性
可空类型:对应int?,勾选了,数据类型会加"?"
外键:勾选了,说明当前属性是某个实体的外键
导航:勾选了,说明当前属性是某个实体的导航属性
关联实体:选择当前字段关联的实体,同一套“外键+导航”要选择相同的关联实体
输入DTO:勾选了,此属性会在实体的InputDto中生成对应属性
输出DTO:勾选了,此属性会在实体的OutputDto中生成对应属性
默认值:控制默认值
*
配置外键:
己方导航属性:配置实体属性时,勾选了导航的属性会在这里显示供选择
己方外键属性:配置实体属性时,勾选了外键的属性会在这里显示供选择
对方实体: 根据实际选择就行
对方导航属性:这里的具体设置看实例吧
外键关系:有一对多 多对一等选项 一般就用多对一和一对一就行,在外键配置部分详细说明
必须:是否必须的
删除行为:有多个选项,根据实际选择,建议使用Restrict
*
保存配置:配置过程中,顺手就去点一下,免得插件崩溃导致你奔溃
*
生成代码:所有配置完成后,点一下保存配置,然后再生成代码
多对一关系的配置 <>
在本教程中,我们使用文章分类~文章~作者这3者来说明多对一关系的配置
从文章的角度出发,文章和文章分类是多对一,文章和用户也是多对一,文章分类和文章是双方都有对方的导航,文章和用户的导航只存在于文章中
文章分类:包含文章集合的导航
文章:包含文章分类和用户的导航
用户:不包含文章的导航
*
配置文章分类实体属性
配置Articles属性,属性类型全名为ICollection<>,因为这个是导航属性,所以勾选导航,关联实体中配置为关联的实体
CanDoo.Test.CMS.Entities.Article
*
配置文章实体属性
配置文章分类关联:
配置ArticleCategoryId属性,属性类型全名为System.Int32,因为这个是外键,所以勾选外键,关联实体中配置为关联的实体
CanDoo.Test.CMS.Entities.ArticleCategory;
配置ArticleCategory属性,属性类型全名为ArticleCategory,因为这个是导航属性,所以勾选导航,关联实体中配置为关联的实体
CanDoo.Test.CMS.Entities.ArticleCategory
配置用户关联:
配置UserId属性,属性类型全名为System.Int32,因为这个是外键,所以勾选外键,关联实体中配置为关联的实体
CanDoo.Test.Identity.Entities.User;
配置User属性,属性类型全名为User,因为这个是导航属性,所以勾选导航,关联实体中配置为关联的实体
CanDoo.Test.Identity.Entities.User
*
配置外键
配置文章和文章分类的外键:己方导航属性AritcleCategory,己方外键属性AritcleCategoryId,对方实体
CanDoo.Test.CMS.Entities.ArticleCategory,对方导航属性Articles,外键关系ManyToOne
,必须就根据实际需要填写了,删除关系选择Restrict,配置此属性,分类下如果存在文章,删除时会因为关联禁止删除
配置文章和用户的外键:己方导航属性User,己方外键属性UserId,对方实体CanDoo.Test.Identity.Entities.User
,对方导航属性不要填写,这里能和填写的做一下对比,外键关系ManyToOne,必须就根据实际需要填写了,删除关系选择Restrict
,配置此属性,分类下如果存在文章,删除时会因为关联禁止删除
代码生成并查看效果 <>
*
当配置完成之后,点一下“保存配置”
*
点一下“生成代码”按钮,系统会询问是否为Osharp解决方案,点"是"就行了
*
代码生成之后,已经将代码添加到项目中,可以执行编译,如果有错,主要就是配置问题或者是有些类库没有引用,我在生成之后发现User实体对应的类库没有引用,引用之后能正常编译(当然前端中也有代码生成,因为我不用这个前端,所以就没仔细去研究了)
*
在程序包管理控制台中运行add-migration -Context DefaultDbcontext initCMS
,生成数据库迁移代码(如果没有多上下文,执行add-migration initCMS即可)
*
在程序包管理控制台中运行update-database -Context DefaultDbcontext,执行数据库迁移(如果没有多上下文,执行
update-database即可)
*
运行项目,查看Swagger,会发现对应的5张表所有的增删改查API都已经生成,并能正常使用
热门工具 换一换