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

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

Osharp代码生成器的使用

目录

  1. 下载并安装生成器插件

  2. 配置项目字段信息

  3. 多对一关系的配置

  4. 代码生成并查看效果

  5. 示例代码配置文件下载

下载并安装生成器插件

  1. 生成器在线下载地址:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp

  2. 也可以通过VS2017菜单栏工具-扩展和更新,检索Osharp进行插件的安装

1508472-20190427111546692-964213239.png

1508472-20190427111553428-978410257.png

配置项目字段信息

  1. 通过菜单运行Osharp代码生成器,启动之后直接全屏

1508472-20190427111605448-1416494758.png

  1. 生成器使用流程

    1508472-20190427133311880-998921533.png

    从生成器界面上可以看到,生成器包括项目信息项目模块列表模块实体列表外键配置实体属性列表

    配置流程:

    1. 配置项目信息:对项目整体信息进行配置

      特别注意:在配置项目信息时,注意对命名空间前缀的配置,以下图解决方案为例,命名空间前缀就应该填写CanDoo.Test,否则生成的时候会提示识别Osharp项目失败,影响生成

      1508472-20190427111612526-580937234.png

    2. 配置项目模块:一个系统往往有多个模块组成,本示例中配置两个模块

      代码名称:生成后对应模块的命名空间和文件夹

      显示名称:模块的中文含义,会体现在功能模块的名字上

    3. 配置模块实体:通过点击对应的项目模块进入模块的实体配置

      代码名称:实体名称

      显示名称:实体的中文名字

      主键类型:表的主键类型,一般是int吧,根据实际选择

      增:控制此实体是否生成新增的API,接口,实现

      改:控制此实体是否生成编辑的API,接口,实现

      删:控制此实体是否生成删除的API,接口,实现

      数据权限:没折腾,不知道怎么用

      锁定:生成IsLocked字段,具体的实现得自己实现

      软删除:生成DeletedTime字段,用于标识删除时间

      创建时间:生成创建时间

      创建审计:生成创建时间,创建人Id字段 (包含前面的创建时间)

      更新审计:生成更新时间,更新人Id字段

      外键 按钮:点击进入外键配置

    4. 配置实体属性:

      代码名称:实体的属性

      显示名称:实体的注释

      属性类型全名:实体的数据类型,特别注意:如果是实体集合,直接使用ICollection<>即可,如果是关联特定实体,比如关联User,需要填写User

      只读:这个应该是生成界面时使用的属性

      排序:这个应该是生成界面时使用的属性

      编辑:这个应该是生成界面时使用的属性

      过滤:这个应该是生成界面时使用的属性

      必填:生成实体的时候会增加[IsRequired]属性

      最小长度:这个应该是生成界面时使用的属性

      最大长度:这个应该是生成界面时使用的属性

      最小值:这个应该是生成界面时使用的属性

      最大值:这个应该是生成界面时使用的属性

      可空类型:对应int?,勾选了,数据类型会加"?"

      外键:勾选了,说明当前属性是某个实体的外键

      导航:勾选了,说明当前属性是某个实体的导航属性

      关联实体:选择当前字段关联的实体,同一套“外键+导航”要选择相同的关联实体

      输入DTO:勾选了,此属性会在实体的InputDto中生成对应属性

      输出DTO:勾选了,此属性会在实体的OutputDto中生成对应属性

      默认值:控制默认值

    5. 配置外键:

      己方导航属性:配置实体属性时,勾选了导航的属性会在这里显示供选择

      己方外键属性:配置实体属性时,勾选了外键的属性会在这里显示供选择

      对方实体: 根据实际选择就行

      对方导航属性:这里的具体设置看实例吧

      外键关系:有一对多 多对一等选项 一般就用多对一和一对一就行,在外键配置部分详细说明

      必须:是否必须的

      删除行为:有多个选项,根据实际选择,建议使用Restrict

    6. 保存配置:配置过程中,顺手就去点一下,免得插件崩溃导致你奔溃

    7. 生成代码:所有配置完成后,点一下保存配置,然后再生成代码

多对一关系的配置

在本教程中,我们使用文章分类~文章~作者这3者来说明多对一关系的配置

从文章的角度出发,文章和文章分类是多对一,文章和用户也是多对一,文章分类和文章是双方都有对方的导航,文章和用户的导航只存在于文章中

文章分类:包含文章集合的导航

文章:包含文章分类和用户的导航

用户:不包含文章的导航

  1. 配置文章分类实体属性

    配置Articles属性,属性类型全名为ICollection<>,因为这个是导航属性,所以勾选导航,关联实体中配置为关联的实体CanDoo.Test.CMS.Entities.Article

    1508472-20190427133323964-1639543264.png

  2. 配置文章实体属性

    配置文章分类关联:

    配置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

    1508472-20190427133311880-998921533.png

  3. 配置外键

    配置文章和文章分类的外键:己方导航属性AritcleCategory,己方外键属性AritcleCategoryId,对方实体CanDoo.Test.CMS.Entities.ArticleCategory,对方导航属性Articles,外键关系ManyToOne,必须就根据实际需要填写了,删除关系选择Restrict,配置此属性,分类下如果存在文章,删除时会因为关联禁止删除

    配置文章和用户的外键:己方导航属性User,己方外键属性UserId,对方实体CanDoo.Test.Identity.Entities.User,对方导航属性不要填写,这里能和填写的做一下对比,外键关系ManyToOne,必须就根据实际需要填写了,删除关系选择Restrict,配置此属性,分类下如果存在文章,删除时会因为关联禁止删除

    1508472-20190427133317488-518563324.png

代码生成并查看效果

  1. 当配置完成之后,点一下“保存配置”

  2. 点一下“生成代码”按钮,系统会询问是否为Osharp解决方案,点"是"就行了

    1508472-20190427111643746-1806554375.png

  3. 代码生成之后,已经将代码添加到项目中,可以执行编译,如果有错,主要就是配置问题或者是有些类库没有引用,我在生成之后发现User实体对应的类库没有引用,引用之后能正常编译(当然前端中也有代码生成,因为我不用这个前端,所以就没仔细去研究了)

    1508472-20190427141210894-618526577.png

    1508472-20190427141220608-1938717682.png

  4. 程序包管理控制台中运行add-migration -Context DefaultDbcontext initCMS,生成数据库迁移代码(如果没有多上下文,执行add-migration initCMS即可)

  5. 程序包管理控制台中运行update-database -Context DefaultDbcontext,执行数据库迁移(如果没有多上下文,执行update-database即可)

    1508472-20190427111702184-891758670.png

  6. 运行项目,查看Swagger,会发现对应的5张表所有的增删改查API都已经生成,并能正常使用

    1508472-20190427141513971-1295310799.png

转载于:https://www.cnblogs.com/candoo/p/10778631.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RUNOOB python练习题 14

用来练手的python 练习题其十四&#xff0c;原链接 : python练习实例14 题干 : 将一个正整数分解质因数。例如&#xff1a;输入90,打印出90233*5。 拿到题目&#xff0c;我们就可以看出&#xff0c;首先我们需要一个函数来判断某一正整数是否为质数&#xff0c;然后还需要一个…

RUNOOB python练习题17

用来练手的python 练习题其十三&#xff0c;原链接 : python练习实例17 题干 : 输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数 这个例题让我回忆起了远古的记忆&#xff0c;python str类的 isalpha,isspace,isdigit方法。这些方法通过比较ASC…

Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台

Centos7下使用ELK&#xff08;Elasticsearch Logstash Kibana&#xff09;搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时&#xff0c;起到了很重要的作用&#xff0c;不过一般情况下日志都分散在各个生产服务器&#xff0c;且开发人员无法登陆生产服务器&#xf…

叠数的加法与字符串 RUNOOB python练习题 18

用来练手的python 练习题其十八&#xff0c;原链接 : python练习实例18 题干: 求saaaaaaaaaaaa…a的值&#xff0c;其中a是一个数字。例如222222222222222(此时共有5个数相加)&#xff0c;几个数相加由键盘控制 这种类型的叠数相加&#xff0c;让我不禁联想到了python中&…

RUNOOB python练习题19 找出1000以内的所有完数

用来练手的python 练习题&#xff0c;原链接 : python练习实例19 题干: 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。例如61&#xff0b;2&#xff0b;3.编程找出1000以内的所有完数。 首先我们要理解&#xff0c;什么是完数。根据百度词条&am…

RUNOOB python练习题 23 使用*号输出菱形

用来练手的python练习题&#xff0c;原题链接:python练习实例23 题干: 这个题目还是利用python字符串的乘法等性质&#xff0c;通过循环打印出我们想要的图形。 源代码如下: for i in range(4):character " " * (3-i) "*" * ((i1)*2-1)print(charact…

RUNOOB python练习题24 斐波那契数列的衍生问题

用来练手的python练习题&#xff0c;原题链接 : python练习实例24 题干: 有一分数序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13…求出这个数列的前20项之和。 拿到题目观察数列&#xff0c;我们不难发现&#xff0c;…

企业邮箱服务器如何设置?

企业邮箱是邮箱服务商面向企业客户开发的邮箱系统&#xff0c;采取管理员机制&#xff0c;企业使用自己的官网域名作为邮箱地址的后缀&#xff0c;由管理员为员工创建邮箱空间&#xff0c;并分配权限。在员工办公的场景中&#xff0c;为了收发邮件方便&#xff0c;一般的都会使…

elasticsearch6.2.4 与logstash与kibana版本6.2.4搭建同步使用

解压 tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz 创建快捷方式 ln -s kibana-6.2.4-linux-x86_64 kibana /app/elasticsearch/kibana/bin #端口 server.port: 5601 #主机 server.host: "10.118.182.85" #es的地址 elasticsearch.url: http://10.118.182…

RUNOOB python练习题25 递归实现阶乘

用来练手的python练习题&#xff0c;原题链接: python练习实例25 题干 : 求12!3!…20!的和。 题干要求我们实现一个阶乘的求和&#xff0c;显而易见的&#xff0c;我们可以使用递归来实现阶乘&#xff0c;再使用循环语句对这些阶乘就行求和。源代码如下: # 求阶乘 def facto…

浅析JavaScript解析赋值、浅拷贝和深拷贝的区别

文章首发于sau交流学习社区 一、赋值&#xff08;Copy&#xff09; 赋值是将某一数值或对象赋给某个变量的过程&#xff0c;分为&#xff1a; 1、基本数据类型&#xff1a;赋值&#xff0c;赋值之后两个变量互不影响 2、引用数据类型&#xff1a;赋**址**&#xff0c;两个变量具…

RUNOOB python练习题27 递归逆向输出字符串

用来练手的python练习题&#xff0c;原题链接: python练习实例27 题干: 利用递归函数调用方式&#xff0c;将所输入的5个字符&#xff0c;以相反顺序打印出来。 实际要实现这个功能很简单&#xff0c;我们只需要反向遍历字符串即可。源代码如下: def p_inverse_boucle(my_st…

ELK 6.2.4搭建

开源实时日志分析ELK平台能够完美的解决我们上述的问题&#xff0c;ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。 官方网站&#xff1a;https://www.elastic.co/products Elasticsearch是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff…

RUNNOOB python练习题 28 递归 数列

用来练手的python练习题其28&#xff0c;原题链接:python练习实例28 题干: 有5个人坐在一起&#xff0c;问第五个人多少岁&#xff1f;他说比第4个人大2岁。问第4个人岁数&#xff0c;他说比第3个人大2岁。问第三个人&#xff0c;又说比第2人大两岁。问第2个人&#xff0c;说比…

RUNOOB python练习题29

用来练手的python练习题其29&#xff0c;原题链接:python练习实例29 题干 : 给一个不多于5位的正整数&#xff0c;要求&#xff1a;一、求它是几位数&#xff0c;二、逆序打印出各位数字。 实际这个正整数无论位数&#xff0c;在python3中都很容易实现。源代码如下: def ent…

定时任务(Spring Cloud Task)

引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.sprin…

服务被人当肉鸡了,叫一路赚钱 xig

网上看了一下&#xff0c;说有专门人研究服务 个人怀疑是阿里云内部人干的&#xff0c;因为买了服务器后&#xff0c;没有安装对外使用的地址性质的网站&#xff0c;IP开通了之后只有阿里的人知道&#xff0c;上面还有阿里云盾。 看了下进程地址&#xff0c;上面的启动命令 x…

RUNOOB python练习题30 回文数

用来练手的python练习题 30。原题链接:python练习实例30 题干 : 一个5位数&#xff0c;判断它是不是回文数。即12321是回文数&#xff0c;个位与万位相同&#xff0c;十位与千位相同。 与上一个例题类似&#xff0c;判断一个数是不是回文数&#xff0c;我们使用字符串类型更加…

高并发与负载均衡-keepalived-概念介绍

keepalived是用户空间的程序&#xff0c;这个程序会同时在主的lvs和备用的lvs启动 转载于:https://www.cnblogs.com/LXL616/p/10793790.html

RUNOOB python练习题31 根据已输入的字符判断星期几

用来练手的python练习题31&#xff0c; 原题链接 : python练习实例31 题干 : 请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。 一个条件语句练习题&#xff0c;非常简单了可以说&#xff0c;就是把所有的条件都…