基於.NET6平台開發WebApi(七)—— 添加Sqlsugar支持


基於NET6平台WebApi嘗鮮項目: 基於最新的.NET6平台,完全拋棄繁雜的接口,采用.NET最經典的三層架構,結合簡化的DDD設計模式... (gitee.com)

1、Sqlsugar配置完畢,我們按照如下結構來創建實體類,為了方便開發,我們先創建一個實體基類EntityBase,然后創建Address類繼承於EntityBase

using SqlSugar;

namespace NET6.Domain.Entities
{
    /// <summary>
    /// 實體基類
    /// </summary>
    public class EntityBase
    {
        /// <summary>
        /// 編號
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, ColumnDescription = "主鍵")]
        public string Id { get; set; } = Guid.NewGuid().ToString("N");
        /// <summary>
        /// 是否刪除
        /// </summary>
        [SugarColumn(ColumnDescription = "是否刪除")]
        public bool IsDeleted { get; set; } = false;
        /// <summary>
        /// 創建者Id
        /// </summary>
        [SugarColumn(ColumnDescription = "創建者Id")]
        public string CreateUserId { get; set; }
        /// <summary>
        /// 創建時間
        /// </summary>
        [SugarColumn(ColumnDescription = "創建時間")]
        public DateTime CreateTime { get; set; } = DateTime.Now;
        /// <summary>
        /// 刪除者Id
        /// </summary>
        [SugarColumn(ColumnDescription = "刪除者Id")]
        public string DeleteUserId { get; set; }
        /// <summary>
        /// 刪除時間
        /// </summary>
        [SugarColumn(ColumnDescription = "刪除時間")]
        public DateTime DeleteTime { get; set; }
    }
}
using SqlSugar;

namespace NET6.Domain.Entities
{
    /// <summary>
    /// 地址
    /// </summary>
    [SugarTable("address")]
    public class Address : EntityBase
    {
        /// <summary>
        /// 用戶ID
        /// </summary>
        public string UserId { get; set; }
        /// <summary>
        /// 收件人姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 收件人手機號
        /// </summary>
        public string Phone { get; set; }
        /// <summary>
        /// 省份
        /// </summary>
        public string Province { get; set; }
        /// <summary>
        /// 城市
        /// </summary>
        public string City { get; set; }
        /// <summary>
        /// 區域
        /// </summary>
        public string Area { get; set; }
        /// <summary>
        /// 詳細地址
        /// </summary>
        public string Detail { get; set; }
        /// <summary>
        /// 是否是默認地址
        /// </summary>
        public bool IsDefault { get; set; }
    }
}

2、為了更方便的使用數據庫,我們為解決方案新增一個控制台項目,並使用CodeFirst來同步數據庫表結構,新增控制台項目取名為EntitySync,打開Program.cs,添加如下代碼

// See https://aka.ms/new-console-template for more information
using NET6.Domain.Entities;
using SqlSugar;

var db = new SqlSugarClient(new ConnectionConfig()
{
    ConnectionString = "server=localhost;Database=DBTest;Uid=root;Pwd=123456@q;",
    DbType = DbType.MySql,
    IsAutoCloseConnection = true,
    InitKeyType = InitKeyType.Attribute
});

#region Aop
//db.Aop.OnLogExecuting = (sql, pars) =>
//{
//    Console.WriteLine(sql + "" + Db.Utilities.SerializeObject
//        (pars.ToDictionary(it => it.ParameterName, it => it.Value)));
//    Console.WriteLine();
//}; 
#endregion

#region 對話框
Console.WriteLine("是否確定同步數據庫表結構?(同名數據表將會被備份,生產環境慎用,回車確認)");
var str = Console.ReadKey();
if (str.Key == ConsoleKey.Enter)
{
    Console.WriteLine("同步中,請稍后...");
}
else
{
    Console.WriteLine("\r\n輸入錯誤,已退出...");
    return;
}
#endregion

//同步數據表結構
db.DbMaintenance.CreateDatabase();
db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
{
   typeof(Address)
});
Console.WriteLine("數據庫結構同步完成!");

3、將EntitySync設置為啟動項目,運行,打開數據庫會發現數據表已經創建完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM