zoukankan      html  css  js  c++  java
  • SqlSugar框架T4模板的使用

    一、T4模板说明

    1.T4模板是用来生成Model层实体类的

    2.文件后缀为.tt

    3.需要修改配置主要有:引用的SqlSugar.dll的位置、生成实体类的位置及生成实体类的命名空间

    4.T4模板生成代码对数据库有要求,数据库应该是不区分大小写的,如果你创建的数据库是否区分大小写的“Chinese_PRC_CS_AS ”,

    5.T4模板生成代码,中包括创建的视图

    那么会抛出异常 'SYSOJBECTS'对象无效,关于修改数据库是否区分大小写可以参考:http://blog.csdn.net/u011127019/article/details/53283251

    二、T4模板使用步骤

    1.创建项目后,引用SqlSugar.dll

    2.添加T4模板:右键项目,选择【运行时文本模板】,后缀为.tt

    还可以,将原Demo中的模板,直接Copy到本项目中

    原Demo中的文件内容为:

    <#@ template debug="false" hostspecific="true" language="C#" #>
    <#@ import namespace="System.Collections.Generic" #>
    <#@ assembly name="System.Core" #>
    <#@ assembly name="System.Xml" #>
    <#@ assembly name="System.Xml.Linq" #>
    <#@ assembly name="System.Data" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.Text" #>
    <#@ import namespace="System.Collections.Generic" #>
    <#@ import namespace="SqlSugar" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Web" #>
    <#@ assembly name="$(SolutionDir)WebTestApp_LibSqlSugar.dll" #>
    
    <# 
         
    
        //当前项目目录
        string projectDir = Host.ResolveAssemblyReference("$(ProjectDir)");
    
        //解决方案目录
        string solutionDir = Host.ResolveAssemblyReference("$(SolutionDir)");
    
     
         using (var db = new SqlSugarClient("server=.;Initial Catalog=SqlSugarTest;Persist Security Info=True;User ID=sa;Password=sasa"))
         {
              db.ClassGenerating.CreateClassFiles(db, "E://T4/Models","Models");  
    
          };
    #>
    View Code

    3.修改T4模板内容:

    修改完数据库连接字符串,生成路径,命名空间后,快捷键Ctrl+S如果成功的情况下,会自动生成Model层到指定记录。

    4.如果需要修改Model层类文件的生成内容,可以直接修改源代码的模板,也可以使用代码的方式来生成Model层,请往下看。

    三、使用代码生成 model层

    //T4 模板代码执行
    using (var db = new SqlSugarClient("server=.;Initial Catalog=sysstudent;Persist Security Info=True;User ID=sa;Password=123"))
    {
        //可以结合别名表,请看别名表的用法
        //db.SetMappingTables(mappingTableList);
        db.ClassGenerating.CreateClassFiles(db, (@"F:SolutionSetMVC_SolutionSugarTwoSugarTwo.ModelModel"), "SugarTwo.Model");
    
        //只生成student和school表的实体
        db.ClassGenerating.CreateClassFilesByTableNames(db, "e:/TestModels2", "Models", new string[] { "student", "school" });
    
        //根据表名生成class字符串
        var str = db.ClassGenerating.TableNameToClass(db, "Student");
        var dynamicToClassStr = db.ClassGenerating.DynamicToClass(new { id = 1 }, "dyName");
    
        //根据SQL语句生成class字符串
        // var str2 = db.ClassGenerating.SqlToClass(db, "select top 1 * from Student", "student");
    
        //改变值(lassTemplate.ItemTemplate=XXXX)可以自定义格式
        var tempItem = ClassTemplate.ItemTemplate;//例如可以在生成的实体添加默认构造函数给指定的字段赋默认值或者公司信息等
        var temp = ClassTemplate.Template;
        //设置新格式模板
        //主键Guid.New(),
        //CreateTime为DateTime.Now 
        //IsRemove=0
        //UpdateTime为DateTime.Now 
        ClassTemplate.Template = "using System;
    using System.Linq;
    using System.Text;
    
    namespace $namespace
    {
        public class $className
        {
            public $className() 
            { 
                this.CreateTime = DateTime.Now;
                this.  = 0;
                this.UpdateTime=DateTime.Now;
                this.$primaryKeyName=Guid.NewGuid().ToString("N").ToUpper();
            }
            $foreach
        }
    }
    ";
    
        //新格式的实体字符串
        var str3 = db.ClassGenerating.TableNameToClass(db, "Student");
    }

    使用代码生成Model层,有个好处,如果T4模板在生成代码的过成功抛出异常,可以调试查看。

    如果想自定义生成实体的一些格式请改变这3个静态变量的模版

     var tempItem=ClassTemplate.ItemTemplate;  类的模版
     var temp=ClassTemplate.Template ;   字段模版
     ClassTemplate.ClassFieldSummaryTemplate 字段摘要模版

    更多:

    .Net开源SqlServer ORM框架SqlSugar整理

  • 相关阅读:
    多步操作产生错误,请检查每一步的状态值
    MediaPlayer 播放百度歌曲
    MusicPlayer
    wpf slider 控件模板
    c# 静态构造函数
    好吧,学了久c#,params都不知道怎么用,记录下
    C# 使用各种API
    WPF转义字符
    WPF 执行完一段动画后再关闭窗口
    WPF xml的绑定
  • 原文地址:https://www.cnblogs.com/tianma3798/p/6088669.html
Copyright © 2011-2022 走看看