一歩一歩ASPを作成する.NET MVC 5プログラム[Repository+Autofac+Automapper+SqlSugar](三)


前言


前編『一歩一歩ASP.NET MVC 5プログラムを作成する[Repository+Autofac+Automapper+SqlSugar](二)』では、次の操作を行います.
  • エンティティおよびツールクラス
  • を作成する.
  • Repositoryクラス
  • を作成する
  • ビューレイヤの完全化
  • コントローラ
  • を修正する.
  • ビュー
  • を作成する
  • データベース接続
  • データベースとテーブル
  • を作成

    簡単なデータベース接続とデータクエリー操作を実現しました.簡単なデータベース接続である以上、さらにアップグレード、カプセル化する必要があります.今日は国内開発者が開発し維持するORMオープンソースフレームワークを導入します.もしあなたがまだORMとは何かを知らないならば、あるいはC#/.NETで主流のORMについては、当サイトのORMに関する記事を参照してください.
  • ORMとは?なぜORMを使うのですか?ORMの使用と利害
  • を浅く分析する
  • 現在の.NET(C#)の世界で、主流のORMフレームワークはどれらがあります--SqlSugar、Dapper、Entity Framework(EF)それとも...

  • 本編のポイント

  • SqlSugar
  • 参照
  • SqlSugarによるRepositoryクラスの改造
  • SqlSugarのインストール


    おなじみのレシピか、おなじみの味か、前述のようにNugetパッケージ管理ツールを使用してSqlSugarというORMコンポーネントをインストールします.
    本シリーズはMySQLデータベースを使用しているので、MySQLデータベースをサポートするためには、SqlSugarのMySQLコンポーネントパッケージであるmySqlSugarをインストールする必要があります.

    SqlSugarを使用してMySQLデータベースに接続


    SqlSugarのインストールが完了したら、SqlSugarの公式サイトに行って、対応するデータベース接続を確認します.アドレス:SqlSugar接続データベースドキュメント、説明は以下の通りです.
    SqlSugarClentはパラメータConnectionConfigによって作成され、ConnectionConfigには次の4つの属性があります.
    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
    {
        /// 
        ///      
        /// 
        public static class Config
        {
            /// 
            ///         (    )
            /// 
            private static readonly string _connectionString =ConfigurationManager.ConnectionStrings["TsBlogMySQLDb"].ConnectionString;
            /// 
            ///         (    )
            /// 
            public static string ConnectionString
            {
                get { return _connectionString; }   
            }
        }
    }

    データベースファクトリ管理クラスをもう1つ作成:DbFactory.cs:
    using SqlSugar;
    
    namespace TsBlog.Repositories
    {
        /// 
        ///      
        /// 
        public class DbFactory
        {
            /// 
            /// SqlSugarClient  
            /// 
            /// 
            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
    {
        /// 
        /// POST        
        /// 
        public class PostRepository
        {
    
            /// 
            ///   ID  
            /// 
            /// Post ID
            /// 
            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().FirstOrDefault();
                //return entity; 
                #endregion
    
    
                #region SqlSugar    
                using (var db = DbFactory.GetSqlSugarClient())
                {
                    var entity = db.Queryable().Single(x => x.Id == id);
                    return entity;
                } 
                #endregion
            }
    
            /// 
            ///       
            /// 
            /// 
            public List FindAll()
            {
                #region Ado.net    
                //var ds = MySqlHelper.Query("SELECT * FROM tb_post");
                //return ds.Tables[0].ToList(); 
                #endregion
    
                #region SqlSugar    
                using (var db = DbFactory.GetSqlSugarClient())
                {
                    var list = db.Queryable().ToList();
                    return list;
                } 
                #endregion
            }
        }
    }

    F 5を押して直接運転すると、次のエラーが発生します.
    SqlSugarはデータエンティティと属性に基づいてマッピングを処理するため、上記の例では、エンティティオブジェクト(post)とデータテーブル(tb_post)のマッピング関係はまだ構成されていません.プロジェクト[TsBlog.Domain]に戻り、このプロジェクトでもNugetを使用してSqlSugarをインストールし、エンティティクラス:Postを開きます.csファイル、エンティティとデータベースのマッピング構成プロパティを追加します.次のようにします.
    using SqlSugar;
    using System;
    
    namespace TsBlog.Domain.Entities
    {
        /// 
        ///      
        /// 
        [SugarTable("tb_post")]
        public class Post
        {
            /// 
            /// ID
            /// 
            [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]
            public int Id { get; set; }
            /// 
            ///   
            /// 
            public string Title { get; set; }
            /// 
            ///   
            /// 
            public string Content { get; set; }
            /// 
            ///   ID
            /// 
            public string AuthorId { get; set; }
            /// 
            ///     
            /// 
            public string AuthorName { get; set; }
            /// 
            ///     
            /// 
            public DateTime CreatedAt { get; set; }
            /// 
            ///     
            /// 
            public DateTime PublishedAt { get; set; }
            /// 
            ///        
            /// 
            public bool IsDeleted { get; set; }
            /// 
            ///       
            /// 
            public bool AllowShow { get; set; }
            /// 
            ///    
            /// 
            public int ViewCount { get; set; }
        }
    }

    [SugarTable(「tb_post」)はSqlSugarがエンティティクラスとデータテーブルのマッピングを処理するときのテーブル構成であり、[SugarColumn(IsIdentity=true,IsPrimaryKey=true)]はエンティティ属性とテーブルフィールドのマッピング構成であり、より多くのテーブルと属性のマッピング構成は公式ドキュメント、アドレスを参照してください.http://www.codeisbug.com/Doc/...
    再びF 5を押して運転しますが、今回は前編とAdoを使うことができます.Net操作データベースのような実行効果:
    OK、SqlSugarの基本的な統合と使用について実現しました.今日この文章はここまでです.読んでくれてありがとう.
    本論文は、コード友網「一歩一歩ASP.NET MVC 5プログラムを作成する[Repository+Autofac+Automapper+SqlSugar](三)」に同期して発表された.