.NET Core实战项目:WEB API(1)

.NET Core实战项目:WEB API(1),第1张

.NET Core实战项目:WEB API(1) 项目介绍

以个人博客项目为例,做一个WEB API,通过三层架构,实现模型、数据访问、业务的分离。

界面展示如下:

使用sqlsugar

网站:SqlSugar ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网

SqlSugar是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,

1.  .NET中唯一支持全自动分表组件,SAAS分库,大数据处理的ORM

2.  .NET 百万级写入、更新  性能最强框架

3.  使用最简单的ORM 【文档,视频教程】

4.媲美原生的极限的性能

5.Github star数仅次于EF 和 Dapper,每月nuget下载量超过1万

更多优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时服务

支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓、神通数据库

在vs中引入该框架过程如下:

 安装即可

建立模型:Models

通过codefirst建立数据库模型,这样就省去了用指令建立数据库的麻烦,且易于供他人学习。

使用.NET5建立一个类:

 

主要有两大类模型:Models和DTO;

models如下:

通过抽象,我们可以找出所有模型的几个基本特征,并由此建立一个基础模型类

public class baseId
  {
    [SugarColumn(IsIdentity=true, IsPrimaryKey=true)]
    public int Id { get; set; }
  }

增填其他类:

 public class BlogNews:baseId
  {
    //nvarchar带中文比较好
    [SugarColumn(ColumnDataType ="nvarchar(30)")]
    public string Title { get; set; }
    [SugarColumn(ColumnDataType ="text")]
    public string Content { get; set; }
    public DateTime Time { get; set; }
    public int BrowseCount { get; set; }
    public int LikeCount { get; set; }

    public int TypeId { get; set; }
    public int WriterId { get; set; }
    /// 
    /// 类型,不映射到数据库
    /// 
    [SugarColumn(IsIgnore =true)]
    public TypeInfo TypeInfo { get; set; }

    [SugarColumn(IsIgnore = true)]
    public WriterInfo WriterInfo { get; set; }
  }

IsIgnore=true代表不映射到数据库,以后用导航查询处理。同时,也可以用于连表查询。

 public class TypeInfo:baseId
  {
    [SugarColumn(ColumnDataType ="nvarchar(12)")]
    public string Name { get; set; }
  }

nvarchar对中文字符友好

 public class WriterInfo:baseId
  {
    [SugarColumn(ColumnDataType ="nvarchar(12)")]
    public string Name { get; set; }
    [SugarColumn(ColumnDataType = "nvarchar(16)")]
    public string UserName { get; set; }
    [SugarColumn(ColumnDataType = "nvarchar(64)")]
    public string UserPwd { get; set; }
  }

建立模型:DTO

DTO层一定要遵循C#扁平化原则:没有对象,最多是系统对象。

 public class WriterDTO
  {
    public int Id { get; set; }
    public string Name { get; set; }
    public string UserName { get; set; }
  }
public class BlogNewsDTO
  {
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public DateTime Time { get; set; }
    public int BrowseCount { get; set; }
    public int LikeCount { get; set; }
    public int TypeId { get; set; }
    public int WriterId { get; set; }
    public string TypeName { get; set; }
    public string WriterName { get; set; }
  }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5717084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存