using SqlSugar; 
 | 
using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using System.Text; 
 | 
using System.Threading.Tasks; 
 | 
  
 | 
namespace WIDESEA_Core.Seed 
 | 
{ 
 | 
    public class FrameSeed 
 | 
    { 
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成Controller层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateControllers(SqlSugarScope sqlSugarClient, string ConnId = null, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_Controller_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Api.Controllers", "Blog.Core.Api.Controllers", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成Model层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateModels(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_Model_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Model", "Blog.Core.Model.Models", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成IRepository层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateIRepositorys(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_IRepository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IRepository", "Blog.Core.IRepository", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成 IService 层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateIServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_IServices_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IServices", "Blog.Core.IServices", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成 Repository 层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateRepository(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_Repository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Repository", "Blog.Core.Repository", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成 Service 层 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient">sqlsugar实例</param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="tableNames">数据库表名数组,默认空,生成所有表</param> 
 | 
        /// <returns></returns> 
 | 
        public static bool CreateServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) 
 | 
        { 
 | 
            Create_Services_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Services", "Blog.Core.Services", tableNames, "", isMuti); 
 | 
            return true; 
 | 
        } 
 | 
  
 | 
  
 | 
        #region 根据数据库表生产Controller层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产Controller层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="blnSerializable">是否序列化</param> 
 | 
        private static void Create_Controller_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false, 
 | 
          bool blnSerializable = false) 
 | 
        { 
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                 .SettingClassTemplate(p => p = 
 | 
@"using Blog.Core.IServices; 
 | 
using Blog.Core.Model; 
 | 
using Blog.Core.Model.Models; 
 | 
using Microsoft.AspNetCore.Authorization; 
 | 
using Microsoft.AspNetCore.Mvc; 
 | 
using System; 
 | 
using System.Linq.Expressions; 
 | 
using System.Threading.Tasks; 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{ 
 | 
    [Route(""api/[controller]/[action]"")] 
 | 
    [ApiController] 
 | 
    [Authorize(Permissions.Name)] 
 | 
     public class {ClassName}Controller : ControllerBase 
 | 
    { 
 | 
            /// <summary> 
 | 
            /// 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下 
 | 
            /// </summary> 
 | 
            private readonly I{ClassName}Services _{ClassName}Services; 
 | 
     
 | 
            public {ClassName}Controller(I{ClassName}Services {ClassName}Services) 
 | 
            { 
 | 
                _{ClassName}Services = {ClassName}Services; 
 | 
            } 
 | 
     
 | 
            [HttpGet] 
 | 
            public async Task<MessageModel<PageModel<{ClassName}>>> Get(int page = 1, string key = """",int intPageSize = 50) 
 | 
            { 
 | 
                if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key)) 
 | 
                { 
 | 
                    key = """"; 
 | 
                } 
 | 
     
 | 
                Expression<Func<{ClassName}, bool>> whereExpression = a => true; 
 | 
     
 | 
                return new MessageModel<PageModel<{ClassName}>>() 
 | 
                { 
 | 
                    msg = ""获取成功"", 
 | 
                    success = true, 
 | 
                    response = await _{ClassName}Services.QueryPage(whereExpression, page, intPageSize) 
 | 
                }; 
 | 
  
 | 
            } 
 | 
  
 | 
            [HttpGet(""{id}"")] 
 | 
            public async Task<MessageModel<{ClassName}>> Get(string id) 
 | 
            { 
 | 
                return new MessageModel<{ClassName}>() 
 | 
                { 
 | 
                    msg = ""获取成功"", 
 | 
                    success = true, 
 | 
                    response = await _{ClassName}Services.QueryById(id) 
 | 
                }; 
 | 
            } 
 | 
  
 | 
            [HttpPost] 
 | 
            public async Task<MessageModel<string>> Post([FromBody] {ClassName} request) 
 | 
            { 
 | 
                var data = new MessageModel<string>(); 
 | 
  
 | 
                var id = await _{ClassName}Services.Add(request); 
 | 
                data.success = id > 0; 
 | 
                if (data.success) 
 | 
                { 
 | 
                    data.response = id.ObjToString(); 
 | 
                    data.msg = ""添加成功""; 
 | 
                }  
 | 
  
 | 
                return data; 
 | 
            } 
 | 
  
 | 
            [HttpPut] 
 | 
            public async Task<MessageModel<string>> Put([FromBody] {ClassName} request) 
 | 
            { 
 | 
                var data = new MessageModel<string>(); 
 | 
                data.success = await _{ClassName}Services.Update(request); 
 | 
                if (data.success) 
 | 
                { 
 | 
                    data.msg = ""更新成功""; 
 | 
                    data.response = request?.id.ObjToString(); 
 | 
                } 
 | 
  
 | 
                return data; 
 | 
            } 
 | 
  
 | 
            [HttpDelete] 
 | 
            public async Task<MessageModel<string>> Delete(int id) 
 | 
            { 
 | 
                var data = new MessageModel<string>(); 
 | 
                var model = await _{ClassName}Services.QueryById(id); 
 | 
                model.IsDeleted = true; 
 | 
                data.success = await _departmentServices.Update(model); 
 | 
                if (data.success) 
 | 
                { 
 | 
                    data.msg = ""删除成功""; 
 | 
                    data.response = model?.Id.ObjToString(); 
 | 
                } 
 | 
  
 | 
                return data; 
 | 
            } 
 | 
    } 
 | 
}") 
 | 
  
 | 
                  .ToClassStringList(strNameSpace); 
 | 
  
 | 
            Dictionary<string, string> newdic = new Dictionary<string, string>(); 
 | 
            //循环处理 首字母小写 并插入新的 Dictionary 
 | 
            foreach (KeyValuePair<string, string> item in ls) 
 | 
            { 
 | 
                string newkey = "_" + item.Key.First().ToString().ToLower() + item.Key.Substring(1); 
 | 
                string newvalue = item.Value.Replace("_" + item.Key, newkey); 
 | 
                newdic.Add(item.Key, newvalue); 
 | 
            } 
 | 
            CreateFilesByClassStringList(newdic, strPath, "{0}Controller"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
        #region 根据数据库表生产Model层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产Model层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        /// <param name="blnSerializable">是否序列化</param> 
 | 
        private static void Create_Model_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false, 
 | 
          bool blnSerializable = false) 
 | 
        { 
 | 
            //多库文件分离 
 | 
            if (isMuti) 
 | 
            { 
 | 
                strPath = strPath + @"\Models\" + ConnId; 
 | 
                strNameSpace = strNameSpace + "." + ConnId; 
 | 
            } 
 | 
  
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                  .SettingClassTemplate(p => p = 
 | 
@"{using} 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{ 
 | 
{ClassDescription} 
 | 
    [SugarTable( ""{ClassName}"", """ + ConnId + @""")]" + (blnSerializable ? "\n    [Serializable]" : "") + @" 
 | 
    public class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @" 
 | 
    { 
 | 
           public {ClassName}() 
 | 
           { 
 | 
           } 
 | 
{PropertyName} 
 | 
    } 
 | 
}") 
 | 
                  //.SettingPropertyDescriptionTemplate(p => p = string.Empty) 
 | 
                  .SettingPropertyTemplate(p => p = 
 | 
@"{SugarColumn} 
 | 
           public {PropertyType} {PropertyName} { get; set; }") 
 | 
  
 | 
                   //.SettingConstructorTemplate(p => p = "              this._{PropertyName} ={DefaultValue};") 
 | 
  
 | 
                   .ToClassStringList(strNameSpace); 
 | 
            CreateFilesByClassStringList(ls, strPath, "{0}"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
        #region 根据数据库表生产IRepository层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产IRepository层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        private static void Create_IRepository_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false 
 | 
            ) 
 | 
        { 
 | 
            //多库文件分离 
 | 
            if (isMuti) 
 | 
            { 
 | 
                strPath = strPath + @"\" + ConnId; 
 | 
                strNameSpace = strNameSpace + "." + ConnId; 
 | 
            } 
 | 
  
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                 .SettingClassTemplate(p => p = 
 | 
@"using Blog.Core.IRepository.Base; 
 | 
using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// I{ClassName}Repository 
 | 
    /// </summary>     
 | 
    public interface I{ClassName}Repository : IBaseRepository<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" 
 | 
    { 
 | 
    } 
 | 
}") 
 | 
  
 | 
                  .ToClassStringList(strNameSpace); 
 | 
            CreateFilesByClassStringList(ls, strPath, "I{0}Repository"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
        #region 根据数据库表生产IServices层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产IServices层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        private static void Create_IServices_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false) 
 | 
        { 
 | 
            //多库文件分离 
 | 
            if (isMuti) 
 | 
            { 
 | 
                strPath = strPath + @"\" + ConnId; 
 | 
                strNameSpace = strNameSpace + "." + ConnId; 
 | 
            } 
 | 
  
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                  .SettingClassTemplate(p => p = 
 | 
@"using Blog.Core.IServices.BASE; 
 | 
using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{     
 | 
    /// <summary> 
 | 
    /// I{ClassName}Services 
 | 
    /// </summary>     
 | 
    public interface I{ClassName}Services :IBaseServices<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" 
 | 
    { 
 | 
    } 
 | 
}") 
 | 
  
 | 
                   .ToClassStringList(strNameSpace); 
 | 
            CreateFilesByClassStringList(ls, strPath, "I{0}Services"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
  
 | 
        #region 根据数据库表生产 Repository 层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产 Repository 层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        private static void Create_Repository_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false) 
 | 
        { 
 | 
            //多库文件分离 
 | 
            if (isMuti) 
 | 
            { 
 | 
                strPath = strPath + @"\" + ConnId; 
 | 
                strNameSpace = strNameSpace + "." + ConnId; 
 | 
            } 
 | 
  
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                  .SettingClassTemplate(p => p = 
 | 
@"using Blog.Core.IRepository" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
using Blog.Core.IRepository.UnitOfWork; 
 | 
using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
using Blog.Core.Repository.Base; 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// {ClassName}Repository 
 | 
    /// </summary> 
 | 
    public class {ClassName}Repository : BaseRepository<{ClassName}>, I{ClassName}Repository" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" 
 | 
    { 
 | 
        public {ClassName}Repository(IUnitOfWork unitOfWork) : base(unitOfWork) 
 | 
        { 
 | 
        } 
 | 
    } 
 | 
}") 
 | 
                  .ToClassStringList(strNameSpace); 
 | 
  
 | 
  
 | 
            CreateFilesByClassStringList(ls, strPath, "{0}Repository"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
        #region 根据数据库表生产 Services 层 
 | 
  
 | 
        /// <summary> 
 | 
        /// 功能描述:根据数据库表生产 Services 层 
 | 
        /// 作  者:Blog.Core 
 | 
        /// </summary> 
 | 
        /// <param name="sqlSugarClient"></param> 
 | 
        /// <param name="ConnId">数据库链接ID</param> 
 | 
        /// <param name="strPath">实体类存放路径</param> 
 | 
        /// <param name="strNameSpace">命名空间</param> 
 | 
        /// <param name="lstTableNames">生产指定的表</param> 
 | 
        /// <param name="strInterface">实现接口</param> 
 | 
        /// <param name="isMuti"></param> 
 | 
        private static void Create_Services_ClassFileByDBTalbe( 
 | 
          SqlSugarScope sqlSugarClient, 
 | 
          string ConnId, 
 | 
          string strPath, 
 | 
          string strNameSpace, 
 | 
          string[] lstTableNames, 
 | 
          string strInterface, 
 | 
          bool isMuti = false) 
 | 
        { 
 | 
            //多库文件分离 
 | 
            if (isMuti) 
 | 
            { 
 | 
                strPath = strPath + @"\" + ConnId; 
 | 
                strNameSpace = strNameSpace + "." + ConnId; 
 | 
            } 
 | 
  
 | 
            var IDbFirst = sqlSugarClient.DbFirst; 
 | 
            if (lstTableNames != null && lstTableNames.Length > 0) 
 | 
            { 
 | 
                IDbFirst = IDbFirst.Where(lstTableNames); 
 | 
            } 
 | 
            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() 
 | 
  
 | 
                  .SettingClassTemplate(p => p = 
 | 
@" 
 | 
using Blog.Core.IServices" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; 
 | 
using Blog.Core.Services.BASE; 
 | 
using Blog.Core.IRepository.Base; 
 | 
  
 | 
namespace " + strNameSpace + @" 
 | 
{ 
 | 
    public class {ClassName}Services : BaseServices<{ClassName}>, I{ClassName}Services" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" 
 | 
    { 
 | 
        private readonly IBaseRepository<{ClassName}> _dal; 
 | 
        public {ClassName}Services(IBaseRepository<{ClassName}> dal) 
 | 
        { 
 | 
            this._dal = dal; 
 | 
            base.BaseDal = dal; 
 | 
        } 
 | 
    } 
 | 
}") 
 | 
                  .ToClassStringList(strNameSpace); 
 | 
  
 | 
            CreateFilesByClassStringList(ls, strPath, "{0}Services"); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
        #region 根据模板内容批量生成文件 
 | 
        /// <summary> 
 | 
        /// 根据模板内容批量生成文件 
 | 
        /// </summary> 
 | 
        /// <param name="ls">类文件字符串list</param> 
 | 
        /// <param name="strPath">生成路径</param> 
 | 
        /// <param name="fileNameTp">文件名格式模板</param> 
 | 
        private static void CreateFilesByClassStringList(Dictionary<string, string> ls, string strPath, string fileNameTp) 
 | 
        { 
 | 
  
 | 
            foreach (var item in ls) 
 | 
            { 
 | 
                var fileName = $"{string.Format(fileNameTp, item.Key)}.cs"; 
 | 
                var fileFullPath = Path.Combine(strPath, fileName); 
 | 
                if (!Directory.Exists(strPath)) 
 | 
                { 
 | 
                    Directory.CreateDirectory(strPath); 
 | 
                } 
 | 
                File.WriteAllText(fileFullPath, item.Value, Encoding.UTF8); 
 | 
            } 
 | 
        } 
 | 
        #endregion 
 | 
    } 
 | 
} 
 |