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都已经生成,并能正常使用


友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信