以个人博客项目为例,做一个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; }
}



