教程目录html
从零开始启动Osharp前端
1.1. 使用OsharpNS项目模板建立项目git
1.2. 配置数据库链接串并启动项目github
1.3. OsharpNS.Swagger使用实例(登陆和受权)数据库
1.4. Angular6的前端项目启动框架
Osharp代码生成器的使用工具
2.1 生成器的使用学习
2.2 生成代码详解(如何本身实现业务功能)ui
Osharp部分模块使用.net
3.1 Osharp.Redis使用
Osharp深度学习和使用
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
目录
生成器在线下载地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
也能够经过VS2017菜单栏工具-扩展和更新
,检索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都已经生成,并能正常使用