Skip to content
sunkaixuan edited this page May 13, 2019 · 11 revisions

1.Create SqlSugarClient

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                DbType = DbType.SqlServer,
                ConnectionString = Config.ConnectionString,
                InitKeyType = InitKeyType.Attribute,
                IsAutoCloseConnection = true
            });

2.Simple

db.DbFirst.CreateClassFile("c:\\Demo\\1", "Models");

3.Screen tables

db.DbFirst.Where("Student").CreateClassFile("c:\\Demo\\2", "Models");


db.DbFirst.Where(it => it.ToLower().StartsWith("view")).CreateClassFile("c:\\Demo\\3", "Models");


db.DbFirst.Where(it => it.ToLower().StartsWith("view")).CreateClassFile("c:\\Demo\\4", "Models");

3.Create SqlSugar Attribute

db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\5", "Models");


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

namespace Models
{
    ///<summary>
    ///
    ///</summary>
    [SugarTable("Order")]
    public partial class Order
    {
           public Order(){


           }
           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           [SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
           public int Id {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public string Name {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public decimal Price {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           public DateTime? CreateTime {get;set;}

    }
}

5.Create database default value

db.DbFirst.IsCreateDefaultValue().CreateClassFile("c:\\Demo\\6", "Demo.Models");

6.Rewrite template

db.DbFirst. SettingClassTemplate(old => { return old;})
            .SettingNamespaceTemplate(old =>{ return old;})
            .SettingPropertyDescriptionTemplate(old =>
            {
                return @"           /// <summary>
                /// Desc_New:{PropertyDescription}
                /// Default_New:{DefaultValue}
                    /// Nullable_New:{IsNullable}
                    /// </summary>";
            })
            .SettingPropertyTemplate(old =>{return old;})
            .SettingConstructorTemplate(old =>{return old; })
        .CreateClassFile("c:\\Demo\\7");

7.Format class name and property name

foreach (var item in db.DbMaintenance.GetTableInfoList())
{
                string entityName = item.Name.ToUpper();/*Format class name*/
                db.MappingTables.Add(entityName , item.Name);
                foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name))
                {
                    db.MappingColumns.Add(col.DbColumnName.ToUpper() /*Format class property name*/, col.DbColumnName, entityName);
                }
}
db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\8", "Models");
using System;
using System.Linq;
using System.Text;
using SqlSugar;

namespace Models
{
    ///<summary>
    ///
    ///</summary>
    [SugarTable("Order")]
    public partial class ORDER
    {
           public ORDER(){


           }
           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           [SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="Id")]
           public int ID {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           [SugarColumn(ColumnName="Name")]
           public string NAME {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           [SugarColumn(ColumnName="Price")]
           public decimal PRICE {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           [SugarColumn(ColumnName="CreateTime")]
           public DateTime? CREATETIME {get;set;}

    }
}

8.Custom template

 public static void Init()
 {
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = Config.ConnectionString,
                DbType = DbType.SqlServer,
                IsAutoCloseConnection = true,
                ConfigureExternalServices = new ConfigureExternalServices()//Create ConfigureExternalServices.cs 
                {
                    RazorService = new RazorService()
                }
  });
 var defaultTemplateString=RazorFirst.DefaultRazorClassTemplate;//Copy from self-modification
 db.DbFirst.UseRazorAnalysis(defaultTemplateString).CreateClassFile("c:\\Demo\\Razor\\");
Create ConfigureExternalServices.cs (Nuget RazorEngine)
using RazorEngine;
using RazorEngine.Templating;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SqlSugar.DbFirstExtensions
{
    public class RazorService : IRazorService
    {
        public List<KeyValuePair<string,string>> GetClassStringList(string razorTemplate, List<RazorTableInfo> model)
        {
            if (model != null && model.Any())
            {
                var  result = new List<KeyValuePair<string, string>>();
                foreach (var item in model)
                {
                    try
                    {
                        item.ClassName = item.DbTableName;//Format Class Name
                        string key = "RazorService.GetClassStringList"+ razorTemplate.Length;
                        var classString = Engine.Razor.RunCompile(razorTemplate, key, item.GetType(), item);
                        result.Add(new KeyValuePair<string,string>(item.ClassName,classString));
                    }
                    catch (Exception ex)
                    {
                        new Exception(item.DbTableName + " error ." + ex.Message);
                    }
                }
                return result;
            }
            else
            {
                return new List<KeyValuePair<string, string>> ();
            }
        }
    }
}