前言

上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)》我们通过如下操作:

  • 创建实体及工具类
  • 创建Repository类
  • 完善View层
    • 修改控制器
    • 创建视图
    • 数据库连接
    • 创建数据库和表

实现了简单的数据库连接及数据查询操作,既然是简单的数据库连接,那我们有必要对它进行进一步的升级、封装。今天我们就引入一个国内开发者开发并维护的ORM开源框架。如果你当前还不知道什么是ORM,或者C#/.NET中有哪些主流的ORM的话,请参见本站的关于ORM相关的文章:

本篇知识要点

  • 引用SqlSugar
  • 使用SqlSugar对Repository类的改造

安装SqlSugar

还是熟悉的配方,还是熟悉的味道,和前文一样我们同样使用Nuget程序包管理工具来安装SqlSugar这个ORM组件:

由于本系列使用的是MySQL数据库,所以,为了支持MySQL数据库,还需要安装SqlSugar的MySQL组件包--mySqlSugar:

使用SqlSugar连接MySQL数据库

在完成了SqlSugar的安装后,我们去到SqlSugar的官网查看对应的数据库接,地址:SqlSugar连接数据库文档,说明如下:

SqlSugarClent是通过参数ConnectionConfig进行创建的,ConnectionConfig有四个属性分别是:

1.Connection:连接字符串

2.DataType: 数据库类型

3.IsAutoCloseConnection:是否自动释放数据库,设为true我们不需要close或者Using的操作,比较推荐

4.InitKeyType:初始化主键和自增列信息的方式

InitKeyType.SystemTable表示自动从数据库读取主键自增列的信息

InitKeyType.Attribute 表示从属性中读取 主键和自增列的信息

连接示例如下:

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {
ConnectionString = Config.ConnectionString, //必填
DbType = DbType.SqlServer, //必填
IsAutoCloseConnection = true, //默认false
InitKeyType=InitKeyType.SystemTable }); //默认SystemTable

OK,我们在项目[TsBlog.Repositories]中创建一个用于管理数据库连接配置的类:Config.cs,代码如下:

using System.Configuration;

namespace TsBlog.Repositories
{
/// <summary>
/// 静态配置类
/// </summary>
public static class Config
{
/// <summary>
/// 数据库连接字符串(私有字段)
/// </summary>
private static readonly string _connectionString =ConfigurationManager.ConnectionStrings["TsBlogMySQLDb"].ConnectionString;
/// <summary>
/// 数据库连接字符串(公有属性)
/// </summary>
public static string ConnectionString
{
get { return _connectionString; }
}
}
}

再创建一个数据库工厂管理类:DbFactory.cs:

using SqlSugar;

namespace TsBlog.Repositories
{
/// <summary>
/// 数据库工厂
/// </summary>
public class DbFactory
{
/// <summary>
/// SqlSugarClient属性
/// </summary>
/// <returns></returns>
public static SqlSugarClient GetSqlSugarClient()
{
var db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = Config.ConnectionString, //必填
DbType = DbType.MySql, //必填
IsAutoCloseConnection = true, //默认false
InitKeyType = InitKeyType.Attribute
}); //默认SystemTable
return db;
}
}
}

最后改造PostRepository.cs类的代码:

using System.Collections.Generic;
using TsBlog.Domain.Entities; namespace TsBlog.Repositories
{
/// <summary>
/// POST表的数据库操作类
/// </summary>
public class PostRepository
{ /// <summary>
/// 根据ID查询
/// </summary>
/// <param name="id">Post ID</param>
/// <returns></returns>
public Post FindById(int id)
{
#region Ado.net读取方式
//var ds = MySqlHelper.Query("SELECT * FROM tb_post WHERE Id=@Id", new MySqlParameter("@Id",id));
//var entity = ds.Tables[0].ToList<Post>().FirstOrDefault();
//return entity;
#endregion #region SqlSugar读取方式
using (var db = DbFactory.GetSqlSugarClient())
{
var entity = db.Queryable<Post>().Single(x => x.Id == id);
return entity;
}
#endregion
} /// <summary>
/// 查询所有数据
/// </summary>
/// <returns></returns>
public List<Post> FindAll()
{
#region Ado.net读取方式
//var ds = MySqlHelper.Query("SELECT * FROM tb_post");
//return ds.Tables[0].ToList<Post>();
#endregion #region SqlSugar读取方式
using (var db = DbFactory.GetSqlSugarClient())
{
var list = db.Queryable<Post>().ToList();
return list;
}
#endregion
}
}
}

按F5直接运行,会得到如下错误:

因为SqlSugar是基于数据实体和属性来处理映射的,在上面的示例中,我们还没有配置实体对象(post)和数据表(tb_post)的映射关系。

我们回到项目【TsBlog.Domain】中,在此项目中也使用Nuget安装SqlSugar,打开实体类:Post.cs文件,添加实体与数据库的映射配置属性,如下:

using SqlSugar;
using System; namespace TsBlog.Domain.Entities
{
/// <summary>
/// 博文实体类
/// </summary>
[SugarTable("tb_post")]
public class Post
{
/// <summary>
/// ID
/// </summary>
[SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
public int Id { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 作者ID
/// </summary>
public string AuthorId { get; set; }
/// <summary>
/// 作者姓名
/// </summary>
public string AuthorName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 发布时间
/// </summary>
public DateTime PublishedAt { get; set; }
/// <summary>
/// 是否标识已删除
/// </summary>
public bool IsDeleted { get; set; }
/// <summary>
/// 是否允许展示
/// </summary>
public bool AllowShow { get; set; }
/// <summary>
/// 浏览量
/// </summary>
public int ViewCount { get; set; }
}
}

其中的[SugarTable("tb_post")]就是SqlSugar处理实体类与数据表映射时的表配置,而[SugarColumn(IsIdentity = true, IsPrimaryKey = true)]则是实体属性与表字段的映射配置,更多表和属性的映射配置请看官方文档,地址:http://www.codeisbug.com/Doc/8/1141

再次按F5运行,这次我们可以看到和上一篇使用Ado.net操作数据库一样的运行效果了:

OK,关于SqlSugar的基本集成和使用已实现,今天这篇文章就到这里,感谢你的耐心阅读。

本文同步发表至 图享网 [《一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar》]10

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)的更多相关文章

  1. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)

    前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)>,我们完成了: * 引用SqlSugar * ...

  2. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)

    前言 大家好,我是Rector 从今天开始,Rector将为大家推出一个关于创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar]的文章系列, ...

  3. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

    前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autof ...

  4. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)

    前言: 在本系列第一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)>中,我为大家介绍了搭建空白解决方案以 ...

  5. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)

    前言 大家好,我是Rector 又是星期五,很兴奋,很高兴,很high...啦啦啦... Rector在图享网又和大家见面啦!!!上一篇<一步一步创建ASP.NET MVC5程序[Reposit ...

  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](七)

    前言 大家好,我依旧是你们的老朋友Rector,很高兴又在周五的时候准时和大家见面. Rector的系列文章[一步一步创建ASP.NET MVC5程序[Repository+Autofac+Autom ...

  7. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](八)

    前言 Hi, 大家好,还是星期五,还是Rector,又在图享网准时和大家见面了. 今天给大家带来系列教程<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Auto ...

  8. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)

    前言 童鞋们,大家好 我是专注.NET开发者社区建设的实践者Rector. 首先,为自己间隔了两个星期五再更新本系列文章找个不充分的理由:Rector最近工作,家庭的各种事务所致,希望大家谅解. 本文 ...

  9. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)

    前言 朋友们, 大家好,我还是Rector,写ASP.NET MVC 5系列文章[一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar] ...

随机推荐

  1. iOS 上线因iPv6被拒,查询服务器是否支持iPv6,mac设置iPv6网络,手机测试iPv6

    一. iOS----如何检查域名是否支持ipv6 iOS----------如何检查域名是否支持ipv6 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧 ...

  2. iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇

    iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...

  3. grep 、find 、tree 新发现

    [root@localhost tftpboot]# ip address | grep -A 1 " eno16777736"2: eno16777736: <BROADC ...

  4. Hello 2018, Bye 2017

    2017年过去了,过去一年经历了太多,改变了好多好多,可以说人生进入了另一个阶段,有可能是成熟吧. 回顾2017 去年换了新工作,离开了将近工作了8年的公司,不带走一丝云彩,为其任劳任怨,最后没有任何 ...

  5. 从一个word文件中读取所有的表格和标题(2)

    上一篇文章主要讲了从word底层xml中获取表格和标题的方法,但是存在一个问题:word文件必须是docx格式的.如果为doc格式的,可以有两种解决方案: 一.把doc文件转换成docx格式文件,用上 ...

  6. Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)一

    h4 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...

  7. 基于Java Mail 进行发送(带附件和压缩附件)的邮件

    刚进公司的training, 下面是要求: Self-study of Java Mail library:  http://www.oracle.com/technetwork/java/javam ...

  8. 【http转https】其之二:申请Let's Encrypt颁发SSL证书

    文:铁乐猫 2017年1月12日 申请Let's Encrypt颁发SSL证书 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务, ISRG ...

  9. 浅谈JavaScript的面向对象程序设计(一)

    面向对象的语言有一个标志,他们都有类的概念,通过类可以创建多个具有相同属性和方法的对象.但是JavaScript中没有类的概念,因此JavaScript与其他的面向对象语言还是有一定区别的.JavaS ...

  10. 数据库和 MySQL 简介(真的只是简介)

    数据库 si 什么? google.com baidu.com 数据库服务器,数据管理系统,数据库,表与记录的关系