【ASP .NET CORE 】SqlSugar DbFirst生成实体框架

阅读: 评论:0

【ASP .NET CORE 】SqlSugar DbFirst生成实体框架

【ASP .NET CORE 】SqlSugar DbFirst生成实体框架

一、基本信息

项目版本描述
.Net Core3.1框架
SqlSugarCore5.0.1.5数据库实体框架
Microscoft Visual Studio 2019 Community16.2.0开发环境

 

 

二、默认模板

2.1、类模板 SettingClassTemplate

子属性描述示例
{using}引用见 2.2
{Namespace}命名空间,CreateClassFile函数的第二参数Model.Entity
{ClassDescription}类描述见 2.3
{SugarTable}类的Sugar属性[SugarTable("CHECK_PARAM")]
{ClassName}类名 = 表/视图名称Student
{Constructor}构造函数中的参数赋值见 2.4
{PropertyName}

属性描述&名称

见 2.5 & 2.6
{using}
namespace {Namespace}
{
{ClassDescription}{SugarTable}public partial class {ClassName}{public {ClassName}(){{Constructor}}
{PropertyName}}
}

 

2.2、引用模板 SettingNamespaceTemplate

SettingClassTemplate 中的 {using} 参数

using System;
using System.Linq;
using System.Text;

2.3、类描述模板 SettingClassDescriptionTemplate

SettingClassTemplate 中的 {ClassDescription} 参数

子属性描述示例
{ClassDescription}类描述学生信息
    ///<summary>///{ClassDescription}///</summary>

2.4、构造参数赋值模板 SettingConstructorTemplate

SettingClassTemplate 中的 {Constructor} 参数,构造函数没有入参时,此模板无效

            this.{PropertyName} ={DefaultValue};

2.5、属性描述模板 SettingPropertyDescriptionTemplate

SettingClassTemplate 中的 {PropertyName} 参数

子属性描述示例
{PropertyDescription}属性描述名称
{Default}默认值NULL::CHARACTER VARYING
{IsNullable}是否为空值True
           /// <summary>/// Desc:{PropertyDescription}/// Default:{DefaultValue}/// Nullable:{IsNullable}/// </summary>

示例 

           /// <summary>/// Desc:名称/// Default:NULL::CHARACTER VARYING/// Nullable:True/// </summary>    

 

2.6、属性模板 SettingPropertyTemplate

SettingClassTemplate 中的 {PropertyName} 参数

子属性描述示例
{SugarColumn}属性的附加Sugar属性

[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]

{PropertyType}属性类型int
{PropertyName}属性名称ID
           {SugarColumn}public {PropertyType} {PropertyName} {get;set;}

示例

           [SugarColumn(IsPrimaryKey=true,IsIdentity=true)]public int ID {get;set;}

三、示例

3.1、创建API,使用默认模板生成实体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using IBLL;
using log4net;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Model.DBEntity;
using Model.MyModel.Config;
using SqlSugar;
using Helper;namespace web_api_core_1.Controllers
{[ApiController][ApiVersion("1")][ApiVersion("2")]public abstract class ModelDBEntityController :BaseController{public ModelDBEntityController(ILog log) : base (log) { }/// <summary>/// 刷新实体模型/// </summary>/// <param name="directoryPath">实体类型文件生成路径</param>/// <param name="nameSpace">命令空间</param>[HttpGet]public string RefreshEntity(string directoryPath = @"C:Entity", string nameSpace = "Model.DBEntity"){try{SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = RSSConfig.SqlConnect.ToString(),//连接符字串DbType = RSSConfig.DbType,IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute//从特性读取主键自增信息});foreach (var item in db.DbMaintenance.GetTableInfoList()){string entityName = item.Name.ToUpper();/*实体名大写*/db.MappingTables.Add(entityName, item.Name);foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name)){db.MappingColumns.Add(col.DbColumnName.ToUpper() /*类的属性大写*/, col.DbColumnName, entityName);}}db.DbFirst.CreateClassFile(directoryPath, nameSpace);}catch(Exception exp){log.Err(exp);return exp.ToMulString(Helper.StrHelper.HTML.WARP);}return "Success";}}
}

3.1.2、生成效果

using System;
using System.Linq;
using System.Text;
using SqlSugar;namespace Model.DBEntity
{///<summary>//////</summary>[SugarTable("machine")]public partial class MACHINE{public MACHINE(){}/// <summary>/// Desc:机器ID  暂定1:盒剂发药机  2:存取系统/// Default:'0'::BIGINT/// Nullable:False/// </summary>           [SugarColumn(IsPrimaryKey=true)]public long MACHINEID {get;set;}/// <summary>/// Desc:机器地址名称/// Default:NULL::CHARACTER VARYING/// Nullable:True/// </summary>           public string LOCATIONNAME {get;set;}/// <summary>/// Desc:机器IP/// Default:NULL::CHARACTER VARYING/// Nullable:True/// </summary>           public string MACHINEIP {get;set;}/// <summary>/// Desc:机器状态  1:有效  0:无效/// Default:1/// Nullable:True/// </summary>           public int? MACHINE_STATE {get;set;}/// <summary>/// Desc:/// Default:0/// Nullable:True/// </summary>           public int? RUNNING_STATE {get;set;}/// <summary>/// Desc:机器类型  1001:片剂 1002:盒剂  1003:针剂 1004:智能药柜 1005:智能药架 1006:拆零分包机 1009:其它/// Default:/// Nullable:True/// </summary>           public int? MACHINETYPE {get;set;}}
}

 

 3.2、给构造函数添加注释,并屏蔽警告 CS1591

3.2.1、由数据库生成实体模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using IBLL;
using log4net;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Model.DBEntity;
using Model.MyModel.Config;
using SqlSugar;
using Helper;namespace web_api_core_1.Controllers
{[ApiController][ApiVersion("1")][ApiVersion("2")]public abstract class ModelDBEntityController :BaseController{public ModelDBEntityController(ILog log) : base (log) { }/// <summary>/// 刷新实体模型/// </summary>/// <param name="directoryPath">实体类型文件生成路径</param>/// <param name="nameSpace">命令空间</param>[HttpGet]public string RefreshEntity(string directoryPath = @"C:Entity", string nameSpace = "Model.DBEntity"){try{SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = RSSConfig.SqlConnect.ToString(),//连接符字串DbType = RSSConfig.DbType,IsAutoCloseConnection = true,InitKeyType = InitKeyType.Attribute//从特性读取主键自增信息});foreach (var item in db.DbMaintenance.GetTableInfoList()){string entityName = item.Name.ToUpper();/*实体名大写*/db.MappingTables.Add(entityName, item.Name);foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name)){db.MappingColumns.Add(col.DbColumnName.ToUpper() /*类的属性大写*/, col.DbColumnName, entityName);}}db.DbFirst.SettingClassTemplate(o=> { return StrHelper.SugarCustom.ClassTemplate;}).SettingNamespaceTemplate(o => { return StrHelper.SugarCustom.NamespaceTemplate; }).SettingClassDescriptionTemplate(o => { return StrHelper.SugarCustom.ClassDescriptionTemplate; }).SettingConstructorTemplate(o => { return StrHelper.SugarCustom.ConstructorTemplate; }).SettingPropertyDescriptionTemplate(o => { return StrHelper.SugarCustom.PropertyDescriptionTemplate; }).SettingPropertyTemplate(o => { return StrHelper.SugarCustom.PropertyTemplate; }).IsCreateAttribute(true).CreateClassFile(directoryPath, nameSpace);}catch(Exception exp){log.Err(exp);return exp.ToMulString(Helper.StrHelper.HTML.WARP);}return "Success";}}
}

3.2.2、StrHelper.cs > StrHelper.SugarCustom

using log4net;
using Microsoft.Extensions.Configuration;
using Model.MyModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;namespace Helper
{public class StrHelper{/// <summary>/// 自定义模板/// <para>屏蔽CS1591警告:#pragma warning disable 1591</para>/// <para>构造函数添加描述</para>/// <para>调整部分模板的空格数量</para>/// </summary>public class SugarCustom{/// <summary>/// 类模板/// </summary>public const string ClassTemplate = @"{using}
#pragma warning disable 1591namespace {Namespace}
{{ClassDescription}{SugarTable}public partial class {ClassName}{/// <summary>/// {ClassName}/// </summary>public {ClassName}(){
{Constructor}}
{PropertyName}}
}
";/// <summary>/// 构造函数参数赋值模板/// </summary>public const string ConstructorTemplate = @"            this.{PropertyName} = {DefaultValue};
";/// <summary>/// 引用模板/// </summary>public const string NamespaceTemplate = @"using System;
using System.Linq;
using System.Text;
";/// <summary>/// 类描述模板/// </summary>public const string ClassDescriptionTemplate = @"   /// <summary>/// {ClassDescription}    /// </summary>";/// <summary>/// 属性描述模板/// </summary>public const string PropertyDescriptionTemplate = @"        /// <summary>/// 描    述:{PropertyDescription}/// 默 认 值:{DefaultValue}/// 是否空值:{IsNullable}/// </summary>";/// <summary>/// 属性模板/// </summary>public const string PropertyTemplate = @"{SugarColumn}public {PropertyType} {PropertyName} { get; set; }
";}/// <summary>/// 默认模板/// </summary>public class SugarDefault{/// <summary>/// 类模板/// </summary>public const string ClassTemplate = @"{using}
namespace {Namespace}
{
{ClassDescription}{SugarTable}public partial class {ClassName}{public {ClassName}(){{Constructor}}
{PropertyName}}
}
";/// <summary>/// 构造函数参数赋值模板/// </summary>public const string ConstructorTemplate = @"            this.{PropertyName} ={DefaultValue};
";/// <summary>/// 引用模板/// </summary>public const string NamespaceTemplate = @"using System;
using System.Linq;
using System.Text;
";/// <summary>/// 类描述模板/// </summary>public const string ClassDescriptionTemplate = @"    ///<summary>///{ClassDescription}    ///</summary>
";/// <summary>/// 属性描述模板/// </summary>public const string PropertyDescriptionTemplate = @"           /// <summary>/// Desc:{PropertyDescription}/// Default:{DefaultValue}/// Nullable:{IsNullable}/// </summary>";/// <summary>/// 属性模板/// </summary>public const string PropertyTemplate = @"           {SugarColumn}public {PropertyType} {PropertyName} {get;set;}
";}}
}

3.2.3、生成效果 

using System;
using System.Linq;
using System.Text;
using SqlSugar;#pragma warning disable 1591namespace Model.DBEntity
{/// <summary>/// /// </summary>[SugarTable("machine")]public partial class MACHINE{/// <summary>/// MACHINE/// </summary>public MACHINE(){}/// <summary>/// 描    述:机器ID  暂定1:盒剂发药机  2:存取系统/// 默 认 值:0/// 是否空值:False/// </summary>[SugarColumn(IsPrimaryKey=true,ColumnName="machineID")]public int MACHINEID { get; set; }/// <summary>/// 描    述:机器类型  1001:片剂 1002:盒剂  1003:针剂 1004:智能药柜 1005:智能药架 1006:拆零分包机 1009:其它/// 默 认 值:/// 是否空值:True/// </summary>[SugarColumn(ColumnName="machineType")]public int? MACHINETYPE { get; set; }/// <summary>/// 描    述:机器地址名称/// 默 认 值:/// 是否空值:True/// </summary>[SugarColumn(ColumnName="locationName")]public string LOCATIONNAME { get; set; }/// <summary>/// 描    述:机器IP/// 默 认 值:/// 是否空值:True/// </summary>[SugarColumn(ColumnName="machineIP")]public string MACHINEIP { get; set; }/// <summary>/// 描    述:机器状态  1:有效  0:无效/// 默 认 值:1/// 是否空值:True/// </summary>[SugarColumn(ColumnName="machine_state")]public byte? MACHINE_STATE { get; set; }/// <summary>/// 描    述:/// 默 认 值:0/// 是否空值:True/// </summary>[SugarColumn(ColumnName="running_state")]public int? RUNNING_STATE { get; set; }}
}

 

本文发布于:2024-01-29 05:43:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647822313111.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实体   框架   NET   ASP   CORE
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23