当前位置:   article > 正文

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

asp.net mvc sqlsugar mysql

前言

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

本篇知识要点

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

安装SqlSugar

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

create-aspnet-mvc-5-web-application-repository-autofac-automapper-sqlsugar-step-by-step-03-01.png

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

create-aspnet-mvc-5-web-application-repository-autofac-automapper-sqlsugar-step-by-step-03-02.png

使用SqlSugar连接MySQL数据库

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

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

1.Connection:连接字符串

2.DataType: 数据库类型

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

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

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

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

连接示例如下:

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

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

  1. using System.Configuration;
  2. namespace TsBlog.Repositories
  3. {
  4. /// <summary>
  5. /// 静态配置类
  6. /// </summary>
  7. public static class Config
  8. {
  9. /// <summary>
  10. /// 数据库连接字符串(私有字段)
  11. /// </summary>
  12. private static readonly string _connectionString =ConfigurationManager.ConnectionStrings["TsBlogMySQLDb"].ConnectionString;
  13. /// <summary>
  14. /// 数据库连接字符串(公有属性)
  15. /// </summary>
  16. public static string ConnectionString
  17. {
  18. get { return _connectionString; }
  19. }
  20. }
  21. }

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

  1. using SqlSugar;
  2. namespace TsBlog.Repositories
  3. {
  4. /// <summary>
  5. /// 数据库工厂
  6. /// </summary>
  7. public class DbFactory
  8. {
  9. /// <summary>
  10. /// SqlSugarClient属性
  11. /// </summary>
  12. /// <returns></returns>
  13. public static SqlSugarClient GetSqlSugarClient()
  14. {
  15. var db = new SqlSugarClient(new ConnectionConfig()
  16. {
  17. ConnectionString = Config.ConnectionString, //必填
  18. DbType = DbType.MySql, //必填
  19. IsAutoCloseConnection = true, //默认false
  20. InitKeyType = InitKeyType.Attribute
  21. }); //默认SystemTable
  22. return db;
  23. }
  24. }
  25. }

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

  1. using System.Collections.Generic;
  2. using TsBlog.Domain.Entities;
  3. namespace TsBlog.Repositories
  4. {
  5. /// <summary>
  6. /// POST表的数据库操作类
  7. /// </summary>
  8. public class PostRepository
  9. {
  10. /// <summary>
  11. /// 根据ID查询
  12. /// </summary>
  13. /// <param name="id">Post ID</param>
  14. /// <returns></returns>
  15. public Post FindById(int id)
  16. {
  17. #region Ado.net读取方式
  18. //var ds = MySqlHelper.Query("SELECT * FROM tb_post WHERE Id=@Id", new MySqlParameter("@Id",id));
  19. //var entity = ds.Tables[0].ToList<Post>().FirstOrDefault();
  20. //return entity;
  21. #endregion
  22. #region SqlSugar读取方式
  23. using (var db = DbFactory.GetSqlSugarClient())
  24. {
  25. var entity = db.Queryable<Post>().Single(x => x.Id == id);
  26. return entity;
  27. }
  28. #endregion
  29. }
  30. /// <summary>
  31. /// 查询所有数据
  32. /// </summary>
  33. /// <returns></returns>
  34. public List<Post> FindAll()
  35. {
  36. #region Ado.net读取方式
  37. //var ds = MySqlHelper.Query("SELECT * FROM tb_post");
  38. //return ds.Tables[0].ToList<Post>();
  39. #endregion
  40. #region SqlSugar读取方式
  41. using (var db = DbFactory.GetSqlSugarClient())
  42. {
  43. var list = db.Queryable<Post>().ToList();
  44. return list;
  45. }
  46. #endregion
  47. }
  48. }
  49. }

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

create-aspnet-mvc-5-web-application-repository-autofac-automapper-sqlsugar-step-by-step-03-03.png

因为SqlSugar是基于数据实体和属性来处理映射的,在上面的示例中,我们还没有配置实体对象(post)和数据表(tb_post)的映射关系。
我们回到项目【TsBlog.Domain】中,在此项目中也使用Nuget安装SqlSugar,打开实体类:Post.cs文件,添加实体与数据库的映射配置属性,如下:

  1. using SqlSugar;
  2. using System;
  3. namespace TsBlog.Domain.Entities
  4. {
  5. /// <summary>
  6. /// 博文实体类
  7. /// </summary>
  8. [SugarTable("tb_post")]
  9. public class Post
  10. {
  11. /// <summary>
  12. /// ID
  13. /// </summary>
  14. [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
  15. public int Id { get; set; }
  16. /// <summary>
  17. /// 标题
  18. /// </summary>
  19. public string Title { get; set; }
  20. /// <summary>
  21. /// 内容
  22. /// </summary>
  23. public string Content { get; set; }
  24. /// <summary>
  25. /// 作者ID
  26. /// </summary>
  27. public string AuthorId { get; set; }
  28. /// <summary>
  29. /// 作者姓名
  30. /// </summary>
  31. public string AuthorName { get; set; }
  32. /// <summary>
  33. /// 创建时间
  34. /// </summary>
  35. public DateTime CreatedAt { get; set; }
  36. /// <summary>
  37. /// 发布时间
  38. /// </summary>
  39. public DateTime PublishedAt { get; set; }
  40. /// <summary>
  41. /// 是否标识已删除
  42. /// </summary>
  43. public bool IsDeleted { get; set; }
  44. /// <summary>
  45. /// 是否允许展示
  46. /// </summary>
  47. public bool AllowShow { get; set; }
  48. /// <summary>
  49. /// 浏览量
  50. /// </summary>
  51. public int ViewCount { get; set; }
  52. }
  53. }

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

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

1721957107-59e86451d70ec_articlex

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/134943?site
推荐阅读
相关标签
  

闽ICP备14008679号