From 0bf34fa2159d6df26a1e7c65f9ae3ee00b654b63 Mon Sep 17 00:00:00 2001 From: PhilPan Date: Tue, 19 Sep 2023 10:55:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=85=E7=90=86vengine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.Vengine/AppService/BaseAppService.cs | 2 +- .../AppService/IVengineAppService.cs | 3 +- .../AppService/IVmodelAppService.cs | 3 +- .../AppService/IVmodelPageAppService.cs | 3 +- .../AppService/VengineAppService.cs | 33 ++--- .../AppService/VengineAppServiceT.cs | 16 ++- .../AppService/VmodelAppService.cs | 13 +- visualdev/Tnb.Vengine/AppService/VmodelDto.cs | 4 +- .../AppService/VmodelPageAppService.cs | 7 +- .../Atrributes/VmodelSettingAttribute.cs | 2 +- .../CodeGenerator/AcmenVmodelContext.cs | 12 +- .../Tnb.Vengine/CodeGenerator/CodeHelper.cs | 4 +- .../CodeGenerator/TemplateContext.cs | 28 +++-- visualdev/Tnb.Vengine/Constants/DbConsts.cs | 3 +- .../Tnb.Vengine/Constants/ModuleConst.cs | 2 +- visualdev/Tnb.Vengine/Constants/VmodelEnum.cs | 35 +++++- .../Tnb.Vengine/DataAccess/DataAccess.cs | 23 ++-- .../Tnb.Vengine/DataAccess/IDataAccess.cs | 8 +- .../Tnb.Vengine/DataAccess/SugarHelper.cs | 118 +++++++++--------- visualdev/Tnb.Vengine/Domain/Entity.cs | 30 ++--- visualdev/Tnb.Vengine/Domain/VengineDto.cs | 5 +- visualdev/Tnb.Vengine/Domain/VmBaseProp.cs | 24 ++-- visualdev/Tnb.Vengine/Domain/VmCalcProp.cs | 5 +- visualdev/Tnb.Vengine/Domain/VmDbProp.cs | 9 +- visualdev/Tnb.Vengine/Domain/VmNavProp.cs | 4 +- visualdev/Tnb.Vengine/Domain/Vmodel.cs | 27 ++-- visualdev/Tnb.Vengine/Domain/VmodelLink.cs | 6 +- visualdev/Tnb.Vengine/Domain/VmodelPage.cs | 6 +- visualdev/Tnb.Vengine/Mapper/TypeAdapter.cs | 22 ++-- visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs | 74 +++++------ visualdev/Tnb.Vengine/Tnb.Vengine.csproj | 10 +- 31 files changed, 289 insertions(+), 252 deletions(-) diff --git a/visualdev/Tnb.Vengine/AppService/BaseAppService.cs b/visualdev/Tnb.Vengine/AppService/BaseAppService.cs index f657fff2..9aa3ac9f 100644 --- a/visualdev/Tnb.Vengine/AppService/BaseAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/BaseAppService.cs @@ -13,4 +13,4 @@ namespace Tnb.Vengine.AppService; /// public class BaseAppService : IDynamicApiController, ITransient { -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/IVengineAppService.cs b/visualdev/Tnb.Vengine/AppService/IVengineAppService.cs index 5167f155..62b22eef 100644 --- a/visualdev/Tnb.Vengine/AppService/IVengineAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/IVengineAppService.cs @@ -12,5 +12,4 @@ namespace Tnb.Vengine.AppService; /// public interface IVengineAppService : ITransient { - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/IVmodelAppService.cs b/visualdev/Tnb.Vengine/AppService/IVmodelAppService.cs index fbf83029..b677945d 100644 --- a/visualdev/Tnb.Vengine/AppService/IVmodelAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/IVmodelAppService.cs @@ -12,5 +12,4 @@ namespace Tnb.Vengine.AppService; /// public interface IVmodelAppService : ITransient { - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/IVmodelPageAppService.cs b/visualdev/Tnb.Vengine/AppService/IVmodelPageAppService.cs index b17cbb87..dd916bd4 100644 --- a/visualdev/Tnb.Vengine/AppService/IVmodelPageAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/IVmodelPageAppService.cs @@ -12,5 +12,4 @@ namespace Tnb.Vengine.AppService; /// public interface IVmodelPageAppService : ITransient { - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VengineAppService.cs b/visualdev/Tnb.Vengine/AppService/VengineAppService.cs index d56da5d1..59fd359a 100644 --- a/visualdev/Tnb.Vengine/AppService/VengineAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/VengineAppService.cs @@ -40,7 +40,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取一条 数据信息 /// [HttpGet("api/[area]/[controller]/{vmid}/get")] - public async Task GetAsync(string vmid, VmGetInput input) + public async Task GetAsync(string vmid, [FromQuery]VmGetInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); VmQueryInput arg = input.Adapt(); @@ -57,7 +57,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取多条 数据列表 /// [HttpGet("api/[area]/[controller]/{vmid}/get-list")] - public async Task GetListAsync(string vmid, VmGetListInput input) + public async Task GetListAsync(string vmid, [FromQuery] VmGetListInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); VmQueryInput arg = input.Adapt(); @@ -73,7 +73,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取多条 数据列表 /// [HttpPost("api/[area]/[controller]/{vmid}/query")] - public async Task QueryAsync(string vmid, VmQueryInput input) + public async Task QueryAsync(string vmid, [FromBody] VmQueryInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid, true); var ls = await _dataAccess.QueryDataAsync(vm, input); @@ -84,7 +84,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 新增 数据 /// [HttpPost("api/[area]/[controller]/{vmid}/create")] - public async Task CreateAsync(string vmid, VmCreateInput input) + public async Task CreateAsync(string vmid, [FromBody] VmCreateInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.CreateDataAsync(vm, input); @@ -95,7 +95,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 更新 数据 /// [HttpPut("api/[area]/[controller]/{vmid}/update")] - public async Task UpdateAsync(string vmid, VmUpdateInput input) + public async Task UpdateAsync(string vmid, [FromBody] VmUpdateInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.UpdateDataAsync(vm, input); @@ -106,19 +106,20 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 删除 数据 /// [HttpDelete("api/[area]/[controller]/{vmid}/delete")] - public async Task DeleteAsync(string vmid, VmDeleteInput input) + public async Task DeleteAsync(string vmid, [FromQuery] VmDeleteInput input) { var vm = await _dataAccess.GetVmodelAsync(vmid); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } - #endregion + + #endregion 按模型的id进行增删改查接口 #region 按模型的areaCode和vmcode进行增删改查接口 private async Task GetVmodelAsync(string areaCode, string vmCode) { - var vm = await _dataAccess.GetVmodelAsync(areaCode, vmCode, false); + var vm = await _dataAccess.GetVmodelAsync(areaCode, vmCode, true); return vm; } @@ -126,7 +127,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取一条 数据信息 /// [HttpGet("api/{areaCode}/{vmCode}/get")] - public async Task GetAsync(string areaCode, string vmCode, VmGetInput input) + public async Task GetAsync(string areaCode, string vmCode, [FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); VmQueryInput arg = input.Adapt(); @@ -143,7 +144,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取多条 数据列表 /// [HttpGet("api/{areaCode}/{vmCode}/get-list")] - public async Task GetListAsync(string areaCode, string vmCode, VmGetListInput input) + public async Task GetListAsync(string areaCode, string vmCode, [FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); VmQueryInput arg = input.Adapt(); @@ -159,7 +160,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 获取多条 数据列表 /// [HttpPost("api/{areaCode}/{vmCode}/query")] - public async Task QueryAsync(string areaCode, string vmCode, VmQueryInput input) + public async Task QueryAsync(string areaCode, string vmCode, [FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ls = await _dataAccess.QueryDataAsync(vm, input); @@ -170,7 +171,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 新增 数据 /// [HttpPost("api/{areaCode}/{vmCode}/create")] - public async Task CreateAsync(string areaCode, string vmCode, VmCreateInput input) + public async Task CreateAsync(string areaCode, string vmCode, [FromBody] VmCreateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.CreateDataAsync(vm, input); @@ -181,7 +182,7 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 更新 数据 /// [HttpPut("api/{areaCode}/{vmCode}/update")] - public async Task UpdateAsync(string areaCode, string vmCode, VmUpdateInput input) + public async Task UpdateAsync(string areaCode, string vmCode, [FromBody] VmUpdateInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.UpdateDataAsync(vm, input); @@ -192,12 +193,12 @@ public class VengineAppService : BaseAppService, IVengineAppService /// 删除 数据 /// [HttpDelete("api/{areaCode}/{vmCode}/delete")] - public async Task DeleteAsync(string areaCode, string vmCode, VmDeleteInput input) + public async Task DeleteAsync(string areaCode, string vmCode, [FromQuery] VmDeleteInput input) { var vm = await GetVmodelAsync(areaCode, vmCode); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } - #endregion -} + #endregion 按模型的areaCode和vmcode进行增删改查接口 +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs b/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs index 89053605..223db491 100644 --- a/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs +++ b/visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs @@ -4,7 +4,6 @@ ///////////////////////////////////////////////////////////////////////////////// using System.Reflection; -using JNPF; using JNPF.Common.Security; using Mapster; using Microsoft.AspNetCore.Authorization; @@ -64,7 +63,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 获取一条 数据信息 /// [HttpGet] - public virtual async Task GetAsync(VmGetInput input) + public virtual async Task GetAsync([FromQuery] VmGetInput input) { var vm = await GetVmodelAsync(); VmQueryInput arg = input.Adapt(); @@ -81,7 +80,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 获取多条 数据列表 /// [HttpGet] - public virtual async Task GetListAsync(VmGetListInput input) + public virtual async Task GetListAsync([FromQuery] VmGetListInput input) { var vm = await GetVmodelAsync(); VmQueryInput arg = input.Adapt(); @@ -97,7 +96,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 获取多条 数据列表 /// [HttpPost] - public virtual async Task QueryAsync(VmQueryInput input) + public virtual async Task QueryAsync([FromBody] VmQueryInput input) { var vm = await GetVmodelAsync(); var ls = await _dataAccess.QueryDataAsync(vm, input); @@ -108,7 +107,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 新增 数据 /// [HttpPost] - public virtual async Task CreateAsync(VmCreateInput input) + public virtual async Task CreateAsync([FromBody] VmCreateInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.CreateDataAsync(vm, input); @@ -119,7 +118,7 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 更新 数据 /// [HttpPut] - public virtual async Task UpdateAsync(VmUpdateInput input) + public virtual async Task UpdateAsync([FromBody] VmUpdateInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.UpdateDataAsync(vm, input); @@ -130,11 +129,10 @@ public class VengineAppService : BaseAppService where TEntity : Entity /// 删除 数据 /// [HttpDelete] - public virtual async Task DeleteAsync(VmDeleteInput input) + public virtual async Task DeleteAsync([FromQuery] VmDeleteInput input) { var vm = await GetVmodelAsync(); var ret = await _dataAccess.DeleteDataAsync(vm, input); return ret; } - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs b/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs index de030730..9b55a234 100644 --- a/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/VmodelAppService.cs @@ -3,15 +3,13 @@ // https://git.tuotong-tech.com/tnb/tnb-server // ///////////////////////////////////////////////////////////////////////////////// -using JNPF.Common.Configuration; using JNPF; +using JNPF.ViewEngine; using Mapster; using Microsoft.AspNetCore.Mvc; using SqlSugar; -using Tnb.Core; using Tnb.Vengine.DataAccess; using Tnb.Vengine.Domain; -using JNPF.ViewEngine; namespace Tnb.Vengine.AppService; @@ -22,11 +20,12 @@ namespace Tnb.Vengine.AppService; [Route("api/[area]/[controller]/[action]")] public class VmodelAppService : VengineAppService, IVmodelAppService { - private readonly ViewEngine _viewEngine; + private readonly IViewEngine _viewEngine; + /// /// 构造函数 /// - public VmodelAppService(IDataAccess da, ViewEngine viewEngine) : base(da) + public VmodelAppService(IDataAccess da, IViewEngine viewEngine) : base(da) { _viewEngine = viewEngine; } @@ -221,8 +220,6 @@ public class VmodelAppService : VengineAppService, IVmodelAppService //code = CodeHelper.RunCompile($"{TemplateContext.KeyEntityPageVue}.cshtml", ctx, null, "SqlSugar"); //CodeHelper.SaveCodeToFile(code, filePath); - return code; } - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VmodelDto.cs b/visualdev/Tnb.Vengine/AppService/VmodelDto.cs index 29656965..ab280788 100644 --- a/visualdev/Tnb.Vengine/AppService/VmodelDto.cs +++ b/visualdev/Tnb.Vengine/AppService/VmodelDto.cs @@ -29,6 +29,4 @@ public class VmodelGetInput public string? dbCode { get; set; } public string? tableName { get; set; } public bool drill { get; set; } - -} - +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/AppService/VmodelPageAppService.cs b/visualdev/Tnb.Vengine/AppService/VmodelPageAppService.cs index 03f65035..92f49e22 100644 --- a/visualdev/Tnb.Vengine/AppService/VmodelPageAppService.cs +++ b/visualdev/Tnb.Vengine/AppService/VmodelPageAppService.cs @@ -3,14 +3,12 @@ // https://git.tuotong-tech.com/tnb/tnb-server // ///////////////////////////////////////////////////////////////////////////////// +using System.Text; using JNPF.Common.Security; using Mapster; -using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using SqlSugar; -using System.Text; -using Tnb.Core; using Tnb.Vengine.DataAccess; using Tnb.Vengine.Domain; @@ -167,5 +165,4 @@ public class VmodelPageAppService : VengineAppService, IVmodelPageAp Console.WriteLine(s); return JObject.Parse(s); } - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Atrributes/VmodelSettingAttribute.cs b/visualdev/Tnb.Vengine/Atrributes/VmodelSettingAttribute.cs index 6124e1c1..2d893802 100644 --- a/visualdev/Tnb.Vengine/Atrributes/VmodelSettingAttribute.cs +++ b/visualdev/Tnb.Vengine/Atrributes/VmodelSettingAttribute.cs @@ -14,4 +14,4 @@ public class VmodelSettingAttribute : Attribute Area = area; Code = code; } -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/CodeGenerator/AcmenVmodelContext.cs b/visualdev/Tnb.Vengine/CodeGenerator/AcmenVmodelContext.cs index b4d72c3f..39942ee6 100644 --- a/visualdev/Tnb.Vengine/CodeGenerator/AcmenVmodelContext.cs +++ b/visualdev/Tnb.Vengine/CodeGenerator/AcmenVmodelContext.cs @@ -16,14 +16,14 @@ public class AcmenVmodelContext : TemplateContext _da = da; Vm = vm; } + /// - /// + /// /// public IDataAccess _da { get; set; } + public Vmodel Vm { get; } - public string NsPrefix { get { return "Tnb"; } } - -} - - + public string NsPrefix + { get { return "Tnb"; } } +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/CodeGenerator/CodeHelper.cs b/visualdev/Tnb.Vengine/CodeGenerator/CodeHelper.cs index 6be2df1f..4bcffaab 100644 --- a/visualdev/Tnb.Vengine/CodeGenerator/CodeHelper.cs +++ b/visualdev/Tnb.Vengine/CodeGenerator/CodeHelper.cs @@ -1,7 +1,6 @@ using System.Globalization; using System.Security.Cryptography; using System.Text; -using Newtonsoft.Json.Linq; namespace Tnb.Vengine; @@ -115,9 +114,10 @@ public class CodeHelper float.TryParse(propDefine, out float f); return (int)f; } + public static int PropDefineToScale(string? propDefine) { float.TryParse(propDefine, out float f); return (int)(f * 10) % 10; } -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/CodeGenerator/TemplateContext.cs b/visualdev/Tnb.Vengine/CodeGenerator/TemplateContext.cs index 61468d79..b3fc49b9 100644 --- a/visualdev/Tnb.Vengine/CodeGenerator/TemplateContext.cs +++ b/visualdev/Tnb.Vengine/CodeGenerator/TemplateContext.cs @@ -1,14 +1,14 @@ using System.Text.RegularExpressions; -using JNPF.Common.Configuration; -using Tnb.Core; namespace Tnb.Vengine; + /// -/// +/// /// public class TemplateContext { #region 模板文件名,同时作为模板Key + public const string KeyAppService = "AppService"; public const string KeyDto = "AppServiceDto"; public const string KeyEntity = "EntityInfo"; @@ -17,10 +17,11 @@ public class TemplateContext public const string KeyEntityPageVue = "EntityPageVue"; public const string KeyTableForeigns = "TableForeigns"; public const string KeyVmodel = "Vmodel"; - #endregion + + #endregion 模板文件名,同时作为模板Key /// - /// + /// /// public TemplateContext(string moduleCode) { @@ -31,27 +32,32 @@ public class TemplateContext #endif ModuleCode = moduleCode; } + /// - /// + /// /// public string BasePath { get; set; } + private string ModuleCode { get; } private string ModulePath => Path.Combine(BasePath, $"{ModuleCode}.Acmen"); private string UiProjPath => Path.Combine(BasePath, "ItMgrWeb"); + /// - /// + /// /// public string AppServicePath => Path.Combine(ModulePath, "AppServices"); + /// - /// + /// /// public string PagePath => Path.Combine(UiProjPath, "src", "views"); + /// - /// + /// /// /// - /// + /// /// /// /// @@ -75,4 +81,4 @@ public enum eLambdaType Where, MemberBinding, OneToMany -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Constants/DbConsts.cs b/visualdev/Tnb.Vengine/Constants/DbConsts.cs index bed8b683..8599135e 100644 --- a/visualdev/Tnb.Vengine/Constants/DbConsts.cs +++ b/visualdev/Tnb.Vengine/Constants/DbConsts.cs @@ -66,5 +66,4 @@ public static class DbConsts public static Guid RoleAdminId = Guid.Parse("39fea2c8-01a4-75cd-026f-2f0349a94098"); public static Guid EventDefaultCategoryId = Guid.Parse("39ffae5d-13d2-1e43-3f0e-98f774f71c8a"); public static Guid DefaultViewId = Guid.Parse("39fea2c1-b2dd-cfae-1c3d-89de77f94709"); - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Constants/ModuleConst.cs b/visualdev/Tnb.Vengine/Constants/ModuleConst.cs index 175490fa..7bd77dc9 100644 --- a/visualdev/Tnb.Vengine/Constants/ModuleConst.cs +++ b/visualdev/Tnb.Vengine/Constants/ModuleConst.cs @@ -5,4 +5,4 @@ public class ModuleConst public const string Tag = "Tnb"; public const string Area = "tnb"; public const string NsPrefix = "Tnb"; -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Constants/VmodelEnum.cs b/visualdev/Tnb.Vengine/Constants/VmodelEnum.cs index c328ad33..fdf26479 100644 --- a/visualdev/Tnb.Vengine/Constants/VmodelEnum.cs +++ b/visualdev/Tnb.Vengine/Constants/VmodelEnum.cs @@ -11,41 +11,59 @@ public enum eCsType { [Description("string")] String = 10, + [Description("bool")] Bool = 12, + [Description("uuid")] Guid = 14, + [Description("int")] Int = 20, + [Description("short")] Short = 22, + [Description("long")] Long = 24, + [Description("float")] Float = 30, + [Description("double")] Double = 32, + [Description("decimal")] Decimal = 34, + [Description("date")] Date = 40, + [Description("time")] Time = 42, + [Description("datetime")] DateTime = 44, + [Description("timestamp")] Timestamp = 46, + [Description("enum")] Enum = 50, + [Description("dictionary")] Dictionary = 52, + [Description("json")] Json = 60, + [Description("entity")] Entity = 70, + [Description("customer")] Customer = 80, } + public enum eDbType { MySql, @@ -59,38 +77,51 @@ public enum eDbType Redis, InfluxDb } + public enum eResourceType { [Description("菜单")] Menu = 10, + [Description("页面")] Page = 20, + [Description("按钮")] Button = 30, + [Description("接口")] Interface = 40, + [Description("视图")] View = 50, } + public enum eSearchType { [Description("无")] None = 0, + [Description("精准查询")] Exact = 1, + [Description("模糊查询")] Fuzzy = 2, + [Description("范围查询")] Range = 3, } + public enum eNavigateType { [Description("无")] None = 0, + [Description("一对一")] OneToOne = 1, + [Description("一对多")] OneToMany = 2, + [Description("多对多")] ManyToMany = 3, } @@ -102,8 +133,10 @@ public enum ePropType { [Description("表字段")] DbTable = 0, + [Description("计算属性")] Calculate = 1, + [Description("导航属性")] Navigate = 2, -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs b/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs index cb46415b..c45a70d1 100644 --- a/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs +++ b/visualdev/Tnb.Vengine/DataAccess/DataAccess.cs @@ -1,30 +1,32 @@ -using JNPF; +using System.Collections.Concurrent; +using JNPF; using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using Microsoft.Extensions.Configuration; using SqlSugar; -using System.Collections.Concurrent; using Tnb.Core; using Tnb.Vengine.Domain; namespace Tnb.Vengine.DataAccess; /// -/// +/// /// public class DataAccess : IDataAccess, ITransient, IDisposable { - const int MAX_PAGE_SIZE = 1000; + private const int MAX_PAGE_SIZE = 1000; private ISqlSugarClient? _db; + protected ISqlSugarClient Db { get { if (_db == null) { - var dbType = App.Configuration.GetConnectionString("DbType"); - var dbConn = App.Configuration.GetConnectionString("DbConn"); - _db = SugarHelper.CreateSugarClient("_db_default_", dbType, dbConn); + ConnectionStringsOptions conn = App.GetConfig("ConnectionStrings", true); + //var dbType = App.Configuration.GetConnectionString("DbType"); + //var dbConn = App.Configuration.GetConnectionString("DbConn"); + _db = SugarHelper.CreateSugarClient(conn.ConfigId, conn.DBType, conn.ConnectString); } return _db; } @@ -35,7 +37,7 @@ public class DataAccess : IDataAccess, ITransient, IDisposable /// /// 全局缓存 /// - static ConcurrentDictionary DbCache = new ConcurrentDictionary(); + private static ConcurrentDictionary DbCache = new ConcurrentDictionary(); /// /// 构造 @@ -290,9 +292,7 @@ public class DataAccess : IDataAccess, ITransient, IDisposable { ret.Add(prop.navCode, new List()); } - } - } } return ret; @@ -424,5 +424,4 @@ public class DataAccess : IDataAccess, ITransient, IDisposable return num; } - -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs b/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs index 3be5bd47..f6230d52 100644 --- a/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs +++ b/visualdev/Tnb.Vengine/DataAccess/IDataAccess.cs @@ -5,7 +5,7 @@ using Tnb.Vengine.Domain; namespace Tnb.Vengine.DataAccess; /// -/// +/// /// public interface IDataAccess : ITransient { @@ -27,18 +27,22 @@ public interface IDataAccess : ITransient /// 获取 Vmodel, 为空时不抛异常 /// Task TryGetVmodelAsync(string id, bool loadNavigate = false); + /// /// 获取 Vmodel, 为空时抛异常 /// Task GetVmodelAsync(string id, bool loadNavigate = false); + /// /// 获取 Vmodel, 为空时不抛异常 /// Task TryGetVmodelAsync(string area, string vmCode, bool loadNavigate = false); + /// /// 获取 Vmodel, 为空时抛异常 /// Task GetVmodelAsync(string area, string vmCode, bool loadNavigate = false); + //Task QueryDataAsync(VmBaseInput input); /// @@ -63,4 +67,4 @@ public interface IDataAccess : ITransient /// 删除数据 默认方法 /// Task DeleteDataAsync(Vmodel vm, VmDeleteInput input); -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/DataAccess/SugarHelper.cs b/visualdev/Tnb.Vengine/DataAccess/SugarHelper.cs index 2a933878..c2fac11b 100644 --- a/visualdev/Tnb.Vengine/DataAccess/SugarHelper.cs +++ b/visualdev/Tnb.Vengine/DataAccess/SugarHelper.cs @@ -7,67 +7,67 @@ namespace Tnb.Vengine.DataAccess; public class SugarHelper { - /// - /// 创建SugarClient实例 - /// - public static ISqlSugarClient CreateSugarClient(string dbCode, string dbType, string dbConnection, Action? configConnection = null, Action? configSugar = null) - { - var config = new ConnectionConfig + /// + /// 创建SugarClient实例 + /// + public static ISqlSugarClient CreateSugarClient(string dbCode, string dbType, string dbConnection, Action? configConnection = null, Action? configSugar = null) { - ConnectionString = dbConnection, - DbType = dbType.Adapt(), - IsAutoCloseConnection = true, - ConfigId = dbCode, - InitKeyType = InitKeyType.Attribute, - MoreSettings = new ConnMoreSettings() - { - IsAutoRemoveDataCache = true, // 自动清理缓存 - IsAutoToUpper = false, - PgSqlIsAutoToLower = false, - DisableNvarchar = true - }, - }; - configConnection?.Invoke(config); - var sugar = new SqlSugarScope(config, configSugar == null ? ConfigSugar : configSugar); - return sugar; - } + var config = new ConnectionConfig + { + ConnectionString = dbConnection, + DbType = dbType.Adapt(), + IsAutoCloseConnection = true, + ConfigId = dbCode, + InitKeyType = InitKeyType.Attribute, + MoreSettings = new ConnMoreSettings() + { + IsAutoRemoveDataCache = true, // 自动清理缓存 + IsAutoToUpper = false, + PgSqlIsAutoToLower = false, + DisableNvarchar = true + }, + }; + configConnection?.Invoke(config); + var sugar = new SqlSugarScope(config, configSugar == null ? ConfigSugar : configSugar); + return sugar; + } - /// - /// SqlSugar默认配置 - /// - /// - public static void ConfigSugar(ISqlSugarClient db) - { - // 设置超时时间 - db.Ado.CommandTimeOut = 30; - db.Aop.OnLogExecuted = (sql, pars) => + /// + /// SqlSugar默认配置 + /// + /// + public static void ConfigSugar(ISqlSugarClient db) { - var finalSql = UtilMethods.GetSqlString(db.CurrentConnectionConfig.DbType, sql, pars); - if (db.Ado.SqlExecutionTime.TotalMilliseconds > 3000) - { - Log.Warning($"慢查询: {db.Ado.SqlExecutionTime.TotalMilliseconds}ms, SQL: " + finalSql); - } - else - { - var oldColor = Console.ForegroundColor; - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine($"【{DateTime.Now.ToString("HH:mm:ss.fff")}——SQL执行完成】{db.Ado.SqlExecutionTime.TotalMilliseconds} ms"); - Console.WriteLine(finalSql); - Console.ForegroundColor = oldColor; - Console.WriteLine(); - } - }; - db.Aop.OnError = (ex) => - { - Log.Error(UtilMethods.GetSqlString(db.CurrentConnectionConfig.DbType, ex.Sql, (SugarParameter[])ex.Parametres)); - }; - } + // 设置超时时间 + db.Ado.CommandTimeOut = 30; + db.Aop.OnLogExecuted = (sql, pars) => + { + var finalSql = UtilMethods.GetSqlString(db.CurrentConnectionConfig.DbType, sql, pars); + if (db.Ado.SqlExecutionTime.TotalMilliseconds > 3000) + { + Log.Warning($"慢查询: {db.Ado.SqlExecutionTime.TotalMilliseconds}ms, SQL: " + finalSql); + } + else + { + var oldColor = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine($"【{DateTime.Now.ToString("HH:mm:ss.fff")}——SQL执行完成】{db.Ado.SqlExecutionTime.TotalMilliseconds} ms"); + Console.WriteLine(finalSql); + Console.ForegroundColor = oldColor; + Console.WriteLine(); + } + }; + db.Aop.OnError = (ex) => + { + Log.Error(UtilMethods.GetSqlString(db.CurrentConnectionConfig.DbType, ex.Sql, (SugarParameter[])ex.Parametres)); + }; + } - public static void CustomSnowId() - { - StaticConfig.CustomSnowFlakeFunc = () => + public static void CustomSnowId() { - return YitIdHelper.NextId(); - }; - } -} + StaticConfig.CustomSnowFlakeFunc = () => + { + return YitIdHelper.NextId(); + }; + } +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/Entity.cs b/visualdev/Tnb.Vengine/Domain/Entity.cs index 4424b5f3..c9b2906e 100644 --- a/visualdev/Tnb.Vengine/Domain/Entity.cs +++ b/visualdev/Tnb.Vengine/Domain/Entity.cs @@ -10,21 +10,21 @@ namespace Tnb.Vengine.Domain; [Serializable] public abstract class Entity : IEntity { - protected Entity() - { - //EntityHelper.TrySetTenantId(this); - } + protected Entity() + { + //EntityHelper.TrySetTenantId(this); + } - /// - public override string ToString() - { - return $"[ENTITY: {GetType().Name}] Keys = {string.Join(", ", GetKeys())}"; - } + /// + public override string ToString() + { + return $"[ENTITY: {GetType().Name}] Keys = {string.Join(", ", GetKeys())}"; + } - public abstract object[] GetKeys(); + public abstract object[] GetKeys(); - //public bool EntityEquals(IEntity other) - //{ - // return EntityHelper.EntityEquals(this, other); - //} -} + //public bool EntityEquals(IEntity other) + //{ + // return EntityHelper.EntityEquals(this, other); + //} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VengineDto.cs b/visualdev/Tnb.Vengine/Domain/VengineDto.cs index 52a33d34..e70da56f 100644 --- a/visualdev/Tnb.Vengine/Domain/VengineDto.cs +++ b/visualdev/Tnb.Vengine/Domain/VengineDto.cs @@ -14,6 +14,7 @@ public class VmBaseInput ///// //public string vmid { get; set; } = string.Empty; } + public class VmGetInput : VmBaseInput { /// @@ -58,6 +59,7 @@ public class VmGetListInput : VmBaseInput /// 过滤条件 /// public string? q { get; set; } + /// /// 输出字段 /// @@ -138,7 +140,6 @@ public class PagedOutput /// public class VmPagedOutput : PagedOutput { - } /// @@ -152,4 +153,4 @@ public class VmSelectProp public string navCode { get; set; } = MAIN_ALIES; public ePropType propType { get; set; } public eNavigateType navType { get; set; } -} +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmBaseProp.cs b/visualdev/Tnb.Vengine/Domain/VmBaseProp.cs index d2a1d135..55986796 100644 --- a/visualdev/Tnb.Vengine/Domain/VmBaseProp.cs +++ b/visualdev/Tnb.Vengine/Domain/VmBaseProp.cs @@ -12,25 +12,25 @@ namespace Tnb.Vengine.Domain; /// public class VmBaseProp { - /// - /// 属性代码 - /// - public string code { get; set; } = string.Empty; + /// + /// 属性代码 + /// + public string code { get; set; } = string.Empty; - /// - /// 显示名称 - /// - public string name { get; set; } = string.Empty; + /// + /// 显示名称 + /// + public string name { get; set; } = string.Empty; } public class DictOption { - public string dictTypeId { get; set; } = string.Empty; - public string refField { get; set; } = "id"; + public string dictTypeId { get; set; } = string.Empty; + public string refField { get; set; } = "id"; } public class CompOption { - public string type { get; set; } = "el-input"; - public JObject attr { get; set; } = new JObject(); + public string type { get; set; } = "el-input"; + public JObject attr { get; set; } = new JObject(); } \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmCalcProp.cs b/visualdev/Tnb.Vengine/Domain/VmCalcProp.cs index ae00bbe1..7ac0c208 100644 --- a/visualdev/Tnb.Vengine/Domain/VmCalcProp.cs +++ b/visualdev/Tnb.Vengine/Domain/VmCalcProp.cs @@ -5,8 +5,7 @@ namespace Tnb.Vengine.Domain; - public class VmCalProp : VmBaseProp { - public string calculate { get; set; } = string.Empty; -} + public string calculate { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmDbProp.cs b/visualdev/Tnb.Vengine/Domain/VmDbProp.cs index bd07fed6..c654a1f3 100644 --- a/visualdev/Tnb.Vengine/Domain/VmDbProp.cs +++ b/visualdev/Tnb.Vengine/Domain/VmDbProp.cs @@ -15,6 +15,7 @@ namespace Tnb.Vengine.Domain; public class VmDbProp : VmBaseProp { #region Properties + /// /// 字段名称 /// @@ -70,7 +71,8 @@ public class VmDbProp : VmBaseProp /// 描述 /// public string? descrip { get; set; } - #endregion + + #endregion Properties /// /// 获取默认值 @@ -79,7 +81,7 @@ public class VmDbProp : VmBaseProp public object? GetDefaultValue() { object? val = null; - if(!required) { return val; } + if (!required) { return val; } if (string.IsNullOrEmpty(defValue)) { val = csType switch @@ -168,11 +170,13 @@ public class VmDbProp : VmBaseProp comp.attr.Add("maxlength", length); comp.attr.Add("showWordLimit", true); break; + case "int": case "short": case "long": comp.type = "el-input-number"; break; + case "DateTime": comp.type = "el-date-picker"; break; @@ -205,6 +209,5 @@ public class VmDbProp : VmBaseProp //if(isJson) sb.Add("IsJson = true") if (sb.Any()) attr += $"\t[SugarColumn({sb.JoinAsString(", ")})]{Environment.NewLine}"; return attr; - } } \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmNavProp.cs b/visualdev/Tnb.Vengine/Domain/VmNavProp.cs index 1b05d667..203f251b 100644 --- a/visualdev/Tnb.Vengine/Domain/VmNavProp.cs +++ b/visualdev/Tnb.Vengine/Domain/VmNavProp.cs @@ -53,6 +53,6 @@ public class VmNavProp : VmBaseProp [JsonIgnore] public Vmodel? naviModel { get; set; } - #endregion -} + #endregion Properties +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/Vmodel.cs b/visualdev/Tnb.Vengine/Domain/Vmodel.cs index 776ba133..9c5fb6cb 100644 --- a/visualdev/Tnb.Vengine/Domain/Vmodel.cs +++ b/visualdev/Tnb.Vengine/Domain/Vmodel.cs @@ -3,15 +3,15 @@ // https://git.tuotong-tech.com/tnb/tnb.server // ///////////////////////////////////////////////////////////////////////////////// +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Reflection; using JNPF.Common.Core.Manager; using JNPF.Common.Extension; using Mapster; using Newtonsoft.Json.Linq; using SqlSugar; -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; -using System.Reflection; using Tnb.Core; using Yitter.IdGenerator; @@ -24,6 +24,7 @@ namespace Tnb.Vengine.Domain; public partial class Vmodel : Entity { #region Properties + /// /// 主键标识 /// @@ -133,7 +134,8 @@ public partial class Vmodel : Entity public string? modifyId { get; set; } [SugarColumn(IsIgnore = true)] - public string fullCode { get { return areaCode + "/" + vmCode; } } + public string fullCode + { get { return areaCode + "/" + vmCode; } } /// /// 主键 @@ -142,7 +144,8 @@ public partial class Vmodel : Entity { return new object[] { id }; } - #endregion + + #endregion Properties /// /// 通过实体创建模型 @@ -351,7 +354,6 @@ public partial class Vmodel : Entity // TODO 按子表条件查询 if (item.Key.Contains(".")) { - } var prop = dbProps.FirstOrDefault(a => a.code == item.Key); if (prop == null) continue; @@ -364,21 +366,26 @@ public partial class Vmodel : Entity wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[1].ToString(), ConditionalType = ConditionalType.GreaterThan, CSharpTypeName = prop.csType }); wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[2].ToString(), ConditionalType = ConditionalType.LessThan, CSharpTypeName = prop.csType }); break; + case ">=<": wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[1].ToString(), ConditionalType = ConditionalType.GreaterThanOrEqual, CSharpTypeName = prop.csType }); wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[2].ToString(), ConditionalType = ConditionalType.LessThan, CSharpTypeName = prop.csType }); break; + case "><=": wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[1].ToString(), ConditionalType = ConditionalType.GreaterThan, CSharpTypeName = prop.csType }); wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[2].ToString(), ConditionalType = ConditionalType.LessThanOrEqual, CSharpTypeName = prop.csType }); break; + case ">=<=": wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[1].ToString(), ConditionalType = ConditionalType.GreaterThanOrEqual, CSharpTypeName = prop.csType }); wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val[2].ToString(), ConditionalType = ConditionalType.LessThanOrEqual, CSharpTypeName = prop.csType }); break; + case "in": wheres.Add(new ConditionalModel { FieldName = prop.field, FieldValue = val.Skip(1).ToString(), ConditionalType = ConditionalType.In, CSharpTypeName = prop.csType }); break; + default: op = string.Empty; break; } } @@ -425,7 +432,7 @@ public partial class Vmodel : Entity { return selProps.Where(a => a.navType != eNavigateType.OneToMany && a.navType != eNavigateType.ManyToMany).Select(a => new SelectModel { - FiledName = (a.navCode == VmSelectProp.MAIN_ALIES ? "" : a.navCode + ".") + a.field, + FiledName = a.navCode + "." + a.field, AsName = (a.navCode == VmSelectProp.MAIN_ALIES ? "" : a.navCode + "_") + a.code }).ToList(); } @@ -503,6 +510,4 @@ public partial class Vmodel : Entity } return obj; } - -} - +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmodelLink.cs b/visualdev/Tnb.Vengine/Domain/VmodelLink.cs index 5fb3fba4..412dd647 100644 --- a/visualdev/Tnb.Vengine/Domain/VmodelLink.cs +++ b/visualdev/Tnb.Vengine/Domain/VmodelLink.cs @@ -4,7 +4,6 @@ ///////////////////////////////////////////////////////////////////////////////// using SqlSugar; -using Tnb.Core; using Yitter.IdGenerator; namespace Tnb.Vengine.Domain; @@ -20,6 +19,7 @@ public partial class VmodelLink : Entity /// [SugarColumn(IsPrimaryKey = true)] public string id { get; set; } = YitIdHelper.NextId().ToString(); + /// /// 数据库连接 /// @@ -45,6 +45,4 @@ public partial class VmodelLink : Entity { return new object[] { id }; } - -} - +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Domain/VmodelPage.cs b/visualdev/Tnb.Vengine/Domain/VmodelPage.cs index 93e6a925..724f09f5 100644 --- a/visualdev/Tnb.Vengine/Domain/VmodelPage.cs +++ b/visualdev/Tnb.Vengine/Domain/VmodelPage.cs @@ -5,7 +5,6 @@ using Newtonsoft.Json.Linq; using SqlSugar; -using Tnb.Core; using Yitter.IdGenerator; namespace Tnb.Vengine.Domain; @@ -17,6 +16,7 @@ namespace Tnb.Vengine.Domain; public partial class VmodelPage : Entity { #region Properties + /// /// 主键标识 /// @@ -102,6 +102,6 @@ public partial class VmodelPage : Entity { return new object[] { id }; } - #endregion -} + #endregion Properties +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Mapper/TypeAdapter.cs b/visualdev/Tnb.Vengine/Mapper/TypeAdapter.cs index 8ec37fc6..46948d2e 100644 --- a/visualdev/Tnb.Vengine/Mapper/TypeAdapter.cs +++ b/visualdev/Tnb.Vengine/Mapper/TypeAdapter.cs @@ -10,15 +10,15 @@ namespace Tnb.Vengine; public class TypeAdapter { - public static TypeAdapterConfig IgnoreNull { get; } - static TypeAdapter() - { - TypeAdapterConfig.GlobalSettings.Default.PreserveReference(true); - TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); - TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); - TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); - IgnoreNull = TypeAdapterConfig.GlobalSettings.Clone(); - IgnoreNull.Default.IgnoreNullValues(true); - } + public static TypeAdapterConfig IgnoreNull { get; } -} + static TypeAdapter() + { + TypeAdapterConfig.GlobalSettings.Default.PreserveReference(true); + TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); + TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); + TypeAdapterConfig.GlobalSettings.NewConfig().MapWith(json => json); + IgnoreNull = TypeAdapterConfig.GlobalSettings.Clone(); + IgnoreNull.Default.IgnoreNullValues(true); + } +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs b/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs index 25f4c931..e2442008 100644 --- a/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs +++ b/visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs @@ -13,41 +13,41 @@ namespace Tnb.Vengine; public class VmodelMapper : IRegister { - public void Register(TypeAdapterConfig config) - { - config.ForType() - .Map(dest => dest.psize, src => 1) - .Map(dest => dest.pnum, src => 0) - .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); - config.ForType() - .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); - config.ForType() - .Map(dest => dest.code, src => src.DbColumnName.ToCamel()) - .Map(dest => dest.name, src => src.ColumnDescription) - .Map(dest => dest.field, src => src.DbColumnName) - .Map(dest => dest.dataType, src => src.DataType) - //.Map(dest => dest.csType, src => src.DbColumnName) - //.Map(dest => dest.propType, src => ePropType.DbTable) - .Map(dest => dest.length, src => src.Length) - .Map(dest => dest.digit, src => src.DecimalDigits) - //.Map(dest => dest.ordinal, src => src.i) - .Map(dest => dest.required, src => !src.IsNullable) - .Map(dest => dest.pkey, src => src.IsPrimarykey) + public void Register(TypeAdapterConfig config) + { + config.ForType() + .Map(dest => dest.psize, src => 1) + .Map(dest => dest.pnum, src => 0) + .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); + config.ForType() + .Map(dest => dest.q, src => string.IsNullOrEmpty(src.q) ? null : src.q.ToObject()); + config.ForType() + .Map(dest => dest.code, src => src.DbColumnName.ToCamel()) + .Map(dest => dest.name, src => src.ColumnDescription) + .Map(dest => dest.field, src => src.DbColumnName) + .Map(dest => dest.dataType, src => src.DataType) + //.Map(dest => dest.csType, src => src.DbColumnName) + //.Map(dest => dest.propType, src => ePropType.DbTable) + .Map(dest => dest.length, src => src.Length) + .Map(dest => dest.digit, src => src.DecimalDigits) + //.Map(dest => dest.ordinal, src => src.i) + .Map(dest => dest.required, src => !src.IsNullable) + .Map(dest => dest.pkey, src => src.IsPrimarykey) + //.Map(dest => dest.descrip, src => src.DbColumnName) + .Map(dest => dest.defValue, src => src.DefaultValue); + config.ForType() + //.Map(dest => dest.code, src => src.DbColumnName.SnakeToCamelCase(false)) + .Map(dest => dest.name, src => src.ColumnDescription) + .Map(dest => dest.field, src => src.ColumnName) + .Map(dest => dest.dataType, src => src.ColumnDataType) + //.Map(dest => dest.csType, src => src.DbColumnName) + //.Map(dest => dest.propType, src => ePropType.DbTable) + .Map(dest => dest.length, src => src.Length) + .Map(dest => dest.digit, src => src.DecimalDigits) + //.Map(dest => dest.ordinal, src => src.i) + .Map(dest => dest.required, src => !src.IsNullable) + .Map(dest => dest.pkey, src => src.IsPrimaryKey); //.Map(dest => dest.descrip, src => src.DbColumnName) - .Map(dest => dest.defValue, src => src.DefaultValue); - config.ForType() - //.Map(dest => dest.code, src => src.DbColumnName.SnakeToCamelCase(false)) - .Map(dest => dest.name, src => src.ColumnDescription) - .Map(dest => dest.field, src => src.ColumnName) - .Map(dest => dest.dataType, src => src.ColumnDataType) - //.Map(dest => dest.csType, src => src.DbColumnName) - //.Map(dest => dest.propType, src => ePropType.DbTable) - .Map(dest => dest.length, src => src.Length) - .Map(dest => dest.digit, src => src.DecimalDigits) - //.Map(dest => dest.ordinal, src => src.i) - .Map(dest => dest.required, src => !src.IsNullable) - .Map(dest => dest.pkey, src => src.IsPrimaryKey); - //.Map(dest => dest.descrip, src => src.DbColumnName) - //.Map(dest => dest.defValue, src => src.DefaultValue); - } -} + //.Map(dest => dest.defValue, src => src.DefaultValue); + } +} \ No newline at end of file diff --git a/visualdev/Tnb.Vengine/Tnb.Vengine.csproj b/visualdev/Tnb.Vengine/Tnb.Vengine.csproj index 70dfc632..47686641 100644 --- a/visualdev/Tnb.Vengine/Tnb.Vengine.csproj +++ b/visualdev/Tnb.Vengine/Tnb.Vengine.csproj @@ -6,13 +6,15 @@ enable + + + + + + - - - -