private void PopulateDataGrid(SqlDataReader reader, DatabaseTable tableName) { dataGrid_Results.ItemsSource = null; switch (tableName) { case DatabaseTable.ProcessControl: var processControls = new List<ProcessControl>(); while (reader.Read()) { var x = new ProcessControl(reader); processControls.Add(x); } dataGrid_Results.ItemsSource = processControls; break; case DatabaseTable.SystemSettings: var systemSettingses = new List<SystemSettings>(); while (reader.Read()) { var x = new SystemSettings(reader); systemSettingses.Add(x); } dataGrid_Results.ItemsSource = systemSettingses; break; case DatabaseTable.BillingDecisionsConfiguration: var billingDecisionsConfigurations = new List<BillingDecisionsConfiguration>(); while (reader.Read()) { var x = new BillingDecisionsConfiguration(reader); billingDecisionsConfigurations.Add(x); } dataGrid_Results.ItemsSource = billingDecisionsConfigurations; break; default: Tools.ShowErrorPopUpModal("Unsupported table"); break; } }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual string GetDbSetName([NotNull] DatabaseTable table) => _dbSetNamer.GetName(Check.NotNull(table, nameof(table)));
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual KeyBuilder VisitPrimaryKey([NotNull] EntityTypeBuilder builder, [NotNull] DatabaseTable table) { Check.NotNull(builder, nameof(builder)); Check.NotNull(table, nameof(table)); var primaryKey = table.PrimaryKey; if (primaryKey == null) { _reporter.WriteWarning(DesignStrings.MissingPrimaryKey(table.DisplayName())); return(null); } var unmappedColumns = primaryKey.Columns .Where(c => _unmappedColumns.Contains(c)) .Select(c => c.Name) .ToList(); if (unmappedColumns.Any()) { _reporter.WriteWarning( DesignStrings.PrimaryKeyErrorPropertyNotFound( table.DisplayName(), string.Join(CultureInfo.CurrentCulture.TextInfo.ListSeparator, unmappedColumns))); return(null); } var keyBuilder = builder.HasKey(primaryKey.Columns.Select(GetPropertyName).ToArray()); if (primaryKey.Columns.Count == 1 && primaryKey.Columns[0].ValueGenerated == null && primaryKey.Columns[0].DefaultValueSql == null) { var property = builder.Metadata.FindProperty(GetPropertyName(primaryKey.Columns[0]))?.AsProperty(); if (property != null) { var conventionalValueGenerated = new RelationalValueGeneratorConvention().GetValueGenerated(property); if (conventionalValueGenerated == ValueGenerated.OnAdd) { property.ValueGenerated = ValueGenerated.Never; } } } keyBuilder.Metadata.AddAnnotations(primaryKey.GetAnnotations()); return(keyBuilder); }
public void Composite_foreign_key() { var ida = new DatabaseColumn { Name = "Id_A", StoreType = "long" }; var idb = new DatabaseColumn { Name = "Id_B", StoreType = "long" }; var parentTable = new DatabaseTable { Name = "Parent", Columns = { ida, idb }, PrimaryKey = new DatabasePrimaryKey { Columns = { ida, idb } } }; var childrenTable = new DatabaseTable { Name = "Children", Columns = { IdColumn, new DatabaseColumn { Name = "ParentId_A",StoreType = "long" }, new DatabaseColumn { Name = "ParentId_B",StoreType = "long" } }, PrimaryKey = IdPrimaryKey }; childrenTable.ForeignKeys.Add( new DatabaseForeignKey { Table = childrenTable, PrincipalTable = parentTable, OnDelete = ReferentialAction.SetNull, Columns = { childrenTable.Columns.ElementAt(1), childrenTable.Columns.ElementAt(2) }, PrincipalColumns = { parentTable.Columns.ElementAt(0), parentTable.Columns.ElementAt(1) } }); var model = _factory.Create(new DatabaseModel { Tables = { parentTable, childrenTable } }); var parent = (EntityType)model.FindEntityType("Parent"); var children = (EntityType)model.FindEntityType("Children"); Assert.NotEmpty(parent.GetReferencingForeignKeys()); var fk = Assert.Single(children.GetForeignKeys()); Assert.False(fk.IsUnique); Assert.Equal(DeleteBehavior.SetNull, fk.DeleteBehavior); var principalKey = fk.PrincipalKey; Assert.Equal("Parent", principalKey.DeclaringEntityType.Name); Assert.Equal("IdA", principalKey.Properties[0].Name); Assert.Equal("IdB", principalKey.Properties[1].Name); }
public static void GenerateControllerApi(DatabaseTable table, string BusinessLayerRootPath) { string forderEntity = BusinessLayerRootPath + Path.DirectorySeparatorChar + "ControllerApi\\"; if (!Directory.Exists(forderEntity)) { Directory.CreateDirectory(forderEntity); } string file = forderEntity + table.ClassName + "Controller.cs"; string className = table.ClassName; bool isHasDeleteFidle = false; foreach (var column in table.Columns) { if (column.PropertyName == "IsDeleted") { isHasDeleteFidle = true; } } #region Lấy thông tin Entity trong bảng hiện tại (Lấy comment và custom method) Dictionary <string, string> dicComment = null; Dictionary <string, string> dicFields = null; string customMethodString = ""; string fileCs = ConfigGlobal.SettingConfig.Setting_FoudationLink + "\\ControllerApi\\" + className + "Controller.cs"; if (!string.IsNullOrEmpty(ConfigGlobal.SettingConfig.Setting_FoudationLink) && ConfigGlobal.SettingConfig.Setting_CheckGenByForder) { if (File.Exists(fileCs)) { using (StreamReader streamReader = new StreamReader(fileCs)) { string text = streamReader.ReadToEnd(); streamReader.Close(); dicFields = FindFieldInEntity(text, out dicComment, out customMethodString); } //var streamReader = new StreamReader(fileCs); //string text = streamReader.ReadToEnd(); //streamReader.Close(); //dicFields = FindFieldInEntity(text, out dicComment, out customMethodString); } } #endregion var stringBuild = new StringBuilder(); { #region Header stringBuild.AppendLine("using System;"); stringBuild.AppendLine("using System.Net;"); stringBuild.AppendLine("using System.Collections.Generic;"); stringBuild.AppendLine("using System.Linq;"); stringBuild.AppendLine("using System.Threading.Tasks;"); stringBuild.AppendLine("using System.Web.Http;"); stringBuild.AppendLine("using Nexus.Common.Enum;"); stringBuild.AppendLine("using System.Web.Http.Cors;"); stringBuild.AppendLine("using Nexus.DatabaseDAL.Common;"); stringBuild.AppendLine("using Nexus.Entity;"); stringBuild.AppendLine("using Nexus.Entity.Entities;"); stringBuild.AppendLine("using Nexus.Memory;"); stringBuild.AppendLine("using Nexus.Models;"); stringBuild.AppendLine("using Nexus.Utils;"); stringBuild.AppendLine("namespace Nexus.Controllers"); stringBuild.AppendLine("{"); stringBuild.AppendLine("\tpublic class " + className + "Controller" + ": ApiController"); stringBuild.AppendFormat("\t{{"); #endregion stringBuild.AppendLine(""); #region get all stringBuild.AppendLine("\t\t[EnableCors(origins: \"*\", headers: \"*\", methods: \"*\")]"); stringBuild.AppendLine("\t\tpublic async Task<IHttpActionResult> Get()"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\t#region token"); stringBuild.AppendLine("\t\t\t\tvar header = Request.Headers;"); stringBuild.AppendLine("\t\t\t\tif (header.Authorization == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\tvar token = header.Authorization.Parameter;"); stringBuild.AppendLine("\t\t\t\tEmployee employee;"); stringBuild.AppendLine("\t\t\t\tif (string.IsNullOrWhiteSpace(token) || !TokenManager.ValidateToken(token, out employee))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine($"\t\t\t\tvar lstData = MemoryInfo.GetAll{className}();"); if (isHasDeleteFidle) { stringBuild.AppendLine("\t\t\t\tif (lstData != null)"); stringBuild.AppendLine("\t\t\t\t\tlstData = lstData.Where(x => x.IsDeleted != null && x.IsDeleted != 1).ToList();"); } stringBuild.AppendLine("\t\t\t\tvar res = new RequestErrorCode(true, null, null);"); stringBuild.AppendLine("\t\t\t\tres.ListDataResult.AddRange(lstData);"); stringBuild.AppendLine("\t\t\t\treturn Ok(res);"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn BadRequest(\"Unknow\");"); stringBuild.AppendLine("\t\t}"); #endregion stringBuild.AppendLine(""); #region get by id stringBuild.AppendLine("\t\t[EnableCors(origins: \"*\", headers: \"*\", methods: \"*\")]"); stringBuild.AppendLine("\t\tpublic async Task<IHttpActionResult> Get(int id)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\t#region token"); stringBuild.AppendLine("\t\t\t\tvar header = Request.Headers;"); stringBuild.AppendLine("\t\t\t\tif (header.Authorization == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\tvar token = header.Authorization.Parameter;"); stringBuild.AppendLine("\t\t\t\tEmployee employee;"); stringBuild.AppendLine("\t\t\t\tif (string.IsNullOrWhiteSpace(token) || !TokenManager.ValidateToken(token, out employee))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine($"\t\t\t\tvar data = MemoryInfo.Get{className}(id);"); if (isHasDeleteFidle) { stringBuild.AppendLine("\t\t\t\tif (data != null && data.IsDeleted == 1)"); stringBuild.AppendLine("\t\t\t\t\tdata = null;"); } stringBuild.AppendLine("\t\t\t\tvar res = new RequestErrorCode(true, null, null);"); stringBuild.AppendLine("\t\t\t\tres.DataResult = data;"); stringBuild.AppendLine("\t\t\t\treturn Ok(res);"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn BadRequest(\"Unknow\");"); stringBuild.AppendLine("\t\t}"); #endregion stringBuild.AppendLine(""); #region Post stringBuild.AppendLine("\t\t[EnableCors(origins: \"*\", headers: \"*\", methods: \"*\")]"); stringBuild.AppendLine($"\t\tpublic async Task<IHttpActionResult> Post([FromBody]{table.ClassName} req)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tstring errorMessage = \"UnknowError\";"); stringBuild.AppendLine("\t\t\t\tstring errorCode = ErrorCodeEnum.UnknownError.ToString();"); stringBuild.AppendLine("\t\t\t\t#region token"); stringBuild.AppendLine("\t\t\t\tvar header = Request.Headers;"); stringBuild.AppendLine("\t\t\t\tif (header.Authorization == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\tvar token = header.Authorization.Parameter;"); stringBuild.AppendLine("\t\t\t\tEmployee employee;"); stringBuild.AppendLine("\t\t\t\tif (string.IsNullOrWhiteSpace(token) || !TokenManager.ValidateToken(token, out employee))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\tif (!Operator.IsAdmin(employee))"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.Error_NotHavePermision.ToString(), \"Khong co quyen\"));"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Validate"); stringBuild.AppendLine("\t\t\t\tif (!Validate(req, out errorCode, out errorMessage))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, errorCode, errorMessage));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Tạo key"); stringBuild.AppendLine("\t\t\t\tvar oldKey = Memory.Memory.GetMaxKey(req.GetName());"); stringBuild.AppendLine("\t\t\t\tint newKey = oldKey + 1;"); stringBuild.AppendLine("\t\t\t\t// set key"); stringBuild.AppendLine("\t\t\t\treq.Id = newKey;"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Process"); stringBuild.AppendLine("\t\t\t\treq.CreatedAt = DateTime.Now;"); stringBuild.AppendLine("\t\t\t\treq.CreatedBy = employee.Id;"); if (isHasDeleteFidle) { stringBuild.AppendLine("\t\t\t\treq.IsDeleted = 0;"); } stringBuild.AppendLine("\t\t\t\tUpdateEntitySql updateEntitySql = new UpdateEntitySql();"); stringBuild.AppendLine("\t\t\t\tvar lstCommand = new List<EntityCommand>();"); stringBuild.AppendLine("\t\t\t\tlstCommand.Add(new EntityCommand { BaseEntity = new Entity.Entity(req), EntityAction = EntityAction.Insert });"); stringBuild.AppendLine("\t\t\t\tbool isOkDone = updateEntitySql.UpdateDefault(lstCommand);"); stringBuild.AppendLine("\t\t\t\tif (!isOkDone)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, errorCode, errorMessage));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\t// update memory"); stringBuild.AppendLine("\t\t\t\tMemorySet.UpdateAndInsertEntity(req);"); stringBuild.AppendLine("\t\t\t\tvar result = new RequestErrorCode(true);"); stringBuild.AppendLine("\t\t\t\tresult.DataResult = req;"); stringBuild.AppendLine("\t\t\t\treturn Ok(result);"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn BadRequest(\"Unknow\");"); stringBuild.AppendLine("\t\t}"); #endregion stringBuild.AppendLine(""); #region put stringBuild.AppendLine("\t\t[EnableCors(origins: \"*\", headers: \"*\", methods: \"*\")]"); stringBuild.AppendLine($"\t\tpublic async Task<IHttpActionResult> Put(int id,[FromBody]{table.ClassName} req)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tstring errorMessage = \"UnknowError\";"); stringBuild.AppendLine("\t\t\t\tstring errorCode = ErrorCodeEnum.UnknownError.ToString();"); stringBuild.AppendLine("\t\t\t\t#region token"); stringBuild.AppendLine("\t\t\t\tvar header = Request.Headers;"); stringBuild.AppendLine("\t\t\t\tif (header.Authorization == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\tvar token = header.Authorization.Parameter;"); stringBuild.AppendLine("\t\t\t\tEmployee employee;"); stringBuild.AppendLine("\t\t\t\tif (string.IsNullOrWhiteSpace(token) || !TokenManager.ValidateToken(token, out employee))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\tif (!Operator.IsAdmin(employee))"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.Error_NotHavePermision.ToString(), \"Khong co quyen\"));"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Validate"); stringBuild.AppendLine("\t\t\t\tif (!ValidateUpdate(req, out errorCode, out errorMessage))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, errorCode, errorMessage));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Check exist"); stringBuild.AppendLine($"\t\t\t\tvar obj = MemoryInfo.Get{table.ClassName}(id);"); stringBuild.AppendLine("\t\t\t\tif (obj == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.DataNotExist.ToString(), \"Khong ton tai\"));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\treq.Id = obj.Id; // gan lai id de update"); stringBuild.AppendLine("\t\t\t\t#region Process"); stringBuild.AppendLine("\t\t\t\treq.UpdatedAt = DateTime.Now;"); stringBuild.AppendLine("\t\t\t\treq.UpdatedBy = employee.Id;"); stringBuild.AppendLine("\t\t\t\tUpdateEntitySql updateEntitySql = new UpdateEntitySql();"); stringBuild.AppendLine("\t\t\t\tvar lstCommand = new List<EntityCommand>();"); stringBuild.AppendLine("\t\t\t\tlstCommand.Add(new EntityCommand { BaseEntity = new Entity.Entity(req), EntityAction = EntityAction.Update });"); stringBuild.AppendLine("\t\t\t\tbool isOkDone = updateEntitySql.UpdateDefault(lstCommand);"); stringBuild.AppendLine("\t\t\t\tif (!isOkDone)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, errorCode, errorMessage));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\t// update memory"); stringBuild.AppendLine("\t\t\t\tMemorySet.UpdateAndInsertEntity(req);"); stringBuild.AppendLine("\t\t\t\tvar result = new RequestErrorCode(true);"); stringBuild.AppendLine("\t\t\t\tresult.DataResult = req;"); stringBuild.AppendLine("\t\t\t\treturn Ok(result);"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn BadRequest(\"Unknow\");"); stringBuild.AppendLine("\t\t}"); #endregion stringBuild.AppendLine(""); #region delete stringBuild.AppendLine("\t\t[EnableCors(origins: \"*\", headers: \"*\", methods: \"*\")]"); stringBuild.AppendLine("\t\tpublic async Task<IHttpActionResult> Delete(int id)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tstring errorMessage = \"UnknowError\";"); stringBuild.AppendLine("\t\t\t\tstring errorCode = ErrorCodeEnum.UnknownError.ToString();"); stringBuild.AppendLine("\t\t\t\t#region token"); stringBuild.AppendLine("\t\t\t\tvar header = Request.Headers;"); stringBuild.AppendLine("\t\t\t\tif (header.Authorization == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\tvar token = header.Authorization.Parameter;"); stringBuild.AppendLine("\t\t\t\tEmployee employee;"); stringBuild.AppendLine("\t\t\t\tif (string.IsNullOrWhiteSpace(token) || !TokenManager.ValidateToken(token, out employee))"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn StatusCode(HttpStatusCode.Unauthorized);"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\tif (!Operator.IsAdmin(employee))"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.Error_NotHavePermision.ToString(), \"Khong co quyen\"));"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Check exist"); stringBuild.AppendLine($"\t\t\t\tvar obj = MemoryInfo.Get{table.ClassName}(id);"); stringBuild.AppendLine("\t\t\t\tif (obj == null)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.DataNotExist.ToString(), \"Khong ton tai\"));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\tbool isHasDeleteProperties = obj.GetType().GetProperty(\"IsDeleted\") != null;"); stringBuild.AppendLine("\t\t\t\tif (!isHasDeleteProperties)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.DataNotExist.ToString(), \"Khong ton tai\"));"); stringBuild.AppendLine("\t\t\t\t}"); if (isHasDeleteFidle) { stringBuild.AppendLine("\t\t\t\tobj.IsDeleted = 1;"); } // stringBuild.AppendLine("\t\t\t\t// check role "); // stringBuild.AppendLine("\t\t\t\tif (!Operator.HasPermision(userInfo.IdUserLogin, RoleDefinitionEnum.None))"); // stringBuild.AppendLine("\t\t\t\t{"); // stringBuild.AppendLine("\t\t\t\treturn Ok(new RequestErrorCode(false, ErrorCodeEnum.Error_NotHavePermision.ToString(), \"Khong co quyen xoa\"));"); // stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t\t#region Process"); stringBuild.AppendLine("\t\t\t\tUpdateEntitySql updateEntitySql = new UpdateEntitySql();"); stringBuild.AppendLine("\t\t\t\tvar lstCommand = new List<EntityCommand>();"); stringBuild.AppendLine("\t\t\t\tlstCommand.Add(new EntityCommand { BaseEntity = new Entity.Entity(obj), EntityAction = EntityAction.Update });"); stringBuild.AppendLine("\t\t\t\tbool isOkDone = updateEntitySql.UpdateDefault(lstCommand);"); stringBuild.AppendLine("\t\t\t\tif (!isOkDone)"); stringBuild.AppendLine("\t\t\t\t{"); stringBuild.AppendLine("\t\t\t\t\treturn Ok(new RequestErrorCode(false, errorCode, errorMessage));"); stringBuild.AppendLine("\t\t\t\t}"); stringBuild.AppendLine("\t\t\t\t#endregion"); stringBuild.AppendLine("\t\t\t\t// update memory"); stringBuild.AppendLine("\t\t\t\tMemorySet.UpdateAndInsertEntity(obj);"); stringBuild.AppendLine("\t\t\t\tvar result = new RequestErrorCode(true);"); stringBuild.AppendLine("\t\t\t\tresult.DataResult = obj;"); stringBuild.AppendLine("\t\t\t\treturn Ok(result);"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn BadRequest(\"Unknow\");"); stringBuild.AppendLine("\t\t}"); #endregion stringBuild.AppendLine(""); #region Custom Function stringBuild.AppendLine("\t\t#region Validation"); stringBuild.AppendLine($"\t\tprivate bool Validate({table.ClassName} obj, out string errorCode, out string errorMess)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\terrorCode = null;"); stringBuild.AppendLine("\t\t\terrorMess = null;"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t\tthrow;"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn true;"); stringBuild.AppendLine("\t\t}"); stringBuild.AppendLine(""); stringBuild.AppendLine($"\t\tprivate bool ValidateUpdate({table.ClassName} obj, out string errorCode, out string errorMess)"); stringBuild.AppendLine("\t\t{"); stringBuild.AppendLine("\t\t\terrorCode = null;"); stringBuild.AppendLine("\t\t\terrorMess = null;"); stringBuild.AppendLine("\t\t\ttry"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine(""); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\tcatch (Exception ex)"); stringBuild.AppendLine("\t\t\t{"); stringBuild.AppendLine("\t\t\t\tLogger.Write(ex.ToString());"); stringBuild.AppendLine("\t\t\t\tthrow;"); stringBuild.AppendLine("\t\t\t}"); stringBuild.AppendLine("\t\t\treturn true;"); stringBuild.AppendLine("\t\t}"); stringBuild.AppendLine("\t\t#endregion"); stringBuild.AppendLine(""); #endregion stringBuild.AppendLine(""); stringBuild.AppendLine("\t}"); // END OF CLASS stringBuild.AppendLine("}"); // END OF NAME SPACE } using (StreamWriter sw = new StreamWriter(file)) { sw.WriteLine(stringBuild.ToString()); sw.Close(); } if (File.Exists(fileCs) && ConfigGlobal.SettingConfig.Setting_CheckGenByForder) { File.Delete(fileCs); using (var sw = new StreamWriter(fileCs)) { sw.WriteLine(stringBuild.ToString()); sw.Close(); } } }
public static List <string> GenerateListOfRandomNumbericFromInterval(int numberOfRowsToGenerate, DatabaseColumn column, DatabaseTable table, Dictionary <string, List <string> > valuesGeneratedForDatabase) { string min = column.MinNumber; string max = column.MaxNumber; Decimal minValue; Decimal maxValue; try { minValue = Decimal.Parse(min); } catch (Exception) { throw new GenerationException($"Could not parse {min}."); } try { maxValue = Decimal.Parse(max); } catch (Exception) { throw new GenerationException($"Could not parse {max}."); } if (minValue > maxValue) { throw new GenerationException($"Minimum value cannot be greater then maximum value"); } minValue *= 100; maxValue *= 100; int intMinValue = Decimal.ToInt32(minValue); int intMaxValue = Decimal.ToInt32(maxValue); Random random = new Random(); List <string> listOfNumerics = new List <string>(numberOfRowsToGenerate); List <string> tempListOfOtherNumerics = new List <string>(); // List of dates, values generated here will be bigger List <Decimal> otherNumerics = new List <Decimal>(); if (valuesGeneratedForDatabase.TryGetValue($"{table.Name}:{column.RelatedColumn}", out tempListOfOtherNumerics)) { foreach (string numericString in tempListOfOtherNumerics) { // substring to remove quotes otherNumerics.Add(Decimal.Parse(numericString)); } } for (int i = 0; i < numberOfRowsToGenerate; i++) { if (otherNumerics.Count() == 0) { int randomInt = random.Next(intMinValue, intMaxValue + 1); listOfNumerics.Add(ParseIntToNumericStringDivideBy100(randomInt)); } else { Decimal otherNumeric = otherNumerics[i]; otherNumeric *= 100; int otherValue = Decimal.ToInt32(otherNumeric); string relation = column.Relation; string value; switch (relation) { case GenerationConstants.LESSER_THAN: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.LesserThan(otherValue, intMinValue, intMaxValue)); break; case GenerationConstants.LESSER_THAN_OR_EQUAL_TO: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.LesserThanOrEqual(otherValue, intMinValue, intMaxValue)); break; case GenerationConstants.EQUAL_TO: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.Equal(otherValue, intMinValue, intMaxValue)); break; case GenerationConstants.NOT_EQUAL_TO: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.NotEqual(otherValue, intMinValue, intMaxValue)); break; case GenerationConstants.GREATER_THAN_OR_EQUAL_TO: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.GreaterThanOrEqual(otherValue, intMinValue, intMaxValue)); break; case GenerationConstants.GREATER_THAN: value = ParseIntToNumericStringDivideBy100(IntegerGeneratorsClass.GreaterThan(otherValue, intMinValue, intMaxValue)); break; default: throw new GenerationException($"{relation} is not a supported column relation"); } listOfNumerics.Add(value); } } return(listOfNumerics); }
private DatabaseColumn FindColumn(DatabaseTable table, string columnName) => table.Columns.SingleOrDefault(c => string.Equals(c.Name, columnName, StringComparison.Ordinal)) ?? table.Columns.SingleOrDefault(c => string.Equals(c.Name, columnName, StringComparison.OrdinalIgnoreCase));
public async Task <List <BaseAltiumDbEntity> > GetData(StreamReader streamReader, DatabaseTable table) { List <BaseAltiumDbEntity> data = new List <BaseAltiumDbEntity>(); table.TableColumns = table.TableColumns.OrderBy(x => x.DatabaseOrder).ToList(); while (true) { var line = await streamReader.ReadLineAsync(); if (line == null) { break; } data.Add(new BaseAltiumDbEntity()); var values = line.Split(','); for (int i = 1; i < table.TableColumns.Count; i++) { data[^ 1][table.TableColumns[i].ColumnName] = values[i - 1];
public DatabaseTable Execute(CancellationToken ct, string tableName) { if (ct.IsCancellationRequested) { return(null); } var tables = _readerAdapter.Tables(tableName); if (tables.Count == 0) { return(null); } if (string.IsNullOrEmpty(_readerAdapter.Parameters.Owner)) { var owner = tables[0].SchemaOwner; Trace.WriteLine("Using first schema " + owner); _readerAdapter.Parameters.Owner = owner; } var columns = _readerAdapter.Columns(tableName); var identityColumns = _readerAdapter.IdentityColumns(tableName); var checkConstraints = _readerAdapter.CheckConstraints(tableName); var pks = _readerAdapter.PrimaryKeys(tableName); var uks = _readerAdapter.UniqueKeys(tableName); var fks = _readerAdapter.ForeignKeys(tableName); var dfs = _readerAdapter.DefaultConstraints(tableName); var triggers = _readerAdapter.Triggers(tableName); var tableDescs = _readerAdapter.TableDescriptions(tableName); var colDescs = _readerAdapter.ColumnDescriptions(tableName); var computed = _readerAdapter.ComputedColumns(tableName); var indexes = MergeIndexColumns(_readerAdapter.Indexes(tableName), _readerAdapter.IndexColumns(tableName)); var statistics = _readerAdapter.Statistics(tableName); if (columns.Count == 0) { return(null); } var table = new DatabaseTable { SchemaOwner = _readerAdapter.Parameters.Owner, Name = tableName }; table.Columns.AddRange(columns); UpdateCheckConstraints(table, checkConstraints); UpdateIdentities(table.Columns, identityColumns); UpdateComputed(table.Columns, computed); UpdateConstraints(table, pks, ConstraintType.PrimaryKey); UpdateConstraints(table, uks, ConstraintType.UniqueKey); UpdateConstraints(table, fks, ConstraintType.ForeignKey); UpdateConstraints(table, dfs, ConstraintType.Default); UpdateIndexes(table, indexes); UpdateStatistics(table, statistics); UpdateTriggers(table, triggers); UpdateTableDescriptions(table, tableDescs); UpdateColumnDescriptions(table, colDescs); _readerAdapter.PostProcessing(table); return(table); }
/// <summary> /// generate the primary key of the database table /// </summary> /// <param name="table">table</param> private void GenerateBusinessObjectPrimaryKey(DatabaseTable table) { string file = BusinessLayerRootPath + Path.DirectorySeparatorChar + table.ClassName + "Keys.cs"; string className = table.ClassName + "Keys"; using (StreamWriter sw = new StreamWriter(file)) { sw.WriteLine("using System;"); sw.WriteLine("using System.Collections.Generic;"); sw.WriteLine("using System.Text;"); sw.WriteLine("namespace " + TierGeneratorSettings.Instance.ProjectNameSpace + ".BusinessLayer"); sw.WriteLine("{"); sw.WriteLine("\tpublic class " + className); sw.WriteLine("\t{"); sw.WriteLine(""); #region Data Members sw.WriteLine("\t\t#region Data Members"); sw.WriteLine(""); foreach (DatabaseColumn column in table.Columns) { if (column.IsPK) { sw.WriteLine("\t\t" + column.CSharpDataTypeName + " " + column.PrivateVariableName + ";"); } } sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); #region Constructor string parameters = string.Empty; foreach (DatabaseColumn column in table.Columns) { if (column.IsPK) { if (parameters.Length > 0) { parameters += ", "; } parameters += column.CSharpDataTypeName + " " + column.publicVariableName; } } sw.WriteLine("\t\t#region Constructor"); sw.WriteLine(""); sw.WriteLine("\t\tpublic " + className + "(" + parameters + ")"); sw.WriteLine("\t\t{"); foreach (DatabaseColumn column in table.Columns) { if (column.IsPK) { sw.WriteLine("\t\t\t " + column.PrivateVariableName + " = " + column.publicVariableName + "; "); } } sw.WriteLine("\t\t}"); sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); #region Properties sw.WriteLine("\t\t#region Properties"); sw.WriteLine(""); foreach (DatabaseColumn column in table.Columns) { if (column.IsPK) { sw.WriteLine("\t\tpublic " + column.CSharpDataTypeName + " " + column.PropertyName); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t get { return " + column.PrivateVariableName + "; }"); sw.WriteLine("\t\t}"); } } sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); sw.WriteLine("\t}"); // END OF CLASS sw.WriteLine("}"); // END OF NAME SPACE } }
public AutoIncrementWriter(DatabaseTable table) { _table = table; }
/// <summary> /// Method to generate Business Object /// </summary> /// <param name="table"></param> private void GenerateBusinessObject(DatabaseTable table) { string file = BusinessLayerRootPath + Path.DirectorySeparatorChar + table.ClassName + ".cs"; string className = table.ClassName; using (StreamWriter sw = new StreamWriter(file)) { sw.WriteLine("using System;"); sw.WriteLine("using System.Collections.Generic;"); sw.WriteLine("using System.Text;"); sw.WriteLine("namespace " + TierGeneratorSettings.Instance.ProjectNameSpace + ".BusinessLayer"); sw.WriteLine("{"); sw.WriteLine("\tpublic class " + className + ": BusinessObjectBase"); sw.WriteLine("\t{"); sw.WriteLine(""); #region Enumeration For Column Name sw.WriteLine("\t\t#region InnerClass"); sw.WriteLine("\t\tpublic enum " + className + "Fields"); sw.WriteLine("\t\t{"); for (int i = 0; i < table.Columns.Count; i++) { DatabaseColumn column = table.Columns[i]; string end = ","; if (i == table.Columns.Count - 1) { end = ""; } sw.WriteLine("\t\t\t" + column.PropertyName + end); } sw.WriteLine("\t\t}"); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); #region Data Members sw.WriteLine("\t\t#region Data Members"); sw.WriteLine(""); foreach (DatabaseColumn column in table.Columns) { sw.WriteLine("\t\t\t" + column.CSharpDataTypeName + " " + column.PrivateVariableName + ";"); } sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); #region Properties sw.WriteLine("\t\t#region Properties"); sw.WriteLine(""); foreach (DatabaseColumn column in table.Columns) { sw.WriteLine("\t\tpublic " + column.CSharpDataTypeName + " " + column.PropertyName); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t get { return " + column.PrivateVariableName + "; }"); sw.WriteLine("\t\t\t set"); sw.WriteLine("\t\t\t {"); sw.WriteLine("\t\t\t\t if (" + column.PrivateVariableName + " != value)"); sw.WriteLine("\t\t\t\t {"); sw.WriteLine("\t\t\t\t\t" + column.PrivateVariableName + " = value;"); sw.WriteLine("\t\t\t\t\t PropertyHasChanged(\"" + column.PropertyName + "\");"); sw.WriteLine("\t\t\t\t }"); sw.WriteLine("\t\t\t }"); sw.WriteLine("\t\t}"); sw.WriteLine(""); } sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); #region Validation sw.WriteLine("\t\t#region Validation"); sw.WriteLine(""); sw.WriteLine("\t\tinternal override void AddValidationRules()"); sw.WriteLine("\t\t{"); foreach (DatabaseColumn column in table.Columns) { if (!column.IsNull) { sw.WriteLine("\t\t\tValidationRules.AddRules(new Validation.ValidateRuleNotNull(\"" + column.PropertyName + "\", \"" + column.PropertyName + "\"));"); } if ((column.CSharpDataTypeName.ToLower() == "string") && column.ColumnSize.HasValue) { sw.WriteLine("\t\t\tValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength(\"" + column.PropertyName + "\", \"" + column.PropertyName + "\"," + column.ColumnSize.Value + "));"); } } sw.WriteLine("\t\t}"); sw.WriteLine(""); sw.WriteLine("\t\t#endregion"); #endregion sw.WriteLine(""); sw.WriteLine("\t}"); // END OF CLASS sw.WriteLine("}"); // END OF NAME SPACE } }
/// <summary> /// 更新线别。 /// </summary> /// <param name="dsParams">包含线别数据的数据集对象。</param> /// <returns>包含执行结果的数据集对象。</returns> public DataSet UpdateLine(DataSet dsParams) { DataSet dsReturn = new DataSet(); DbConnection dbconn = null; DbTransaction dbtran = null; string lineCode = ""; if (null != dsParams && dsParams.Tables.Contains(FMM_PRODUCTION_LINE_FIELDS.DATABASE_TABLE_NAME)) { DataTable dtParams = dsParams.Tables[FMM_PRODUCTION_LINE_FIELDS.DATABASE_TABLE_NAME]; for (int i = 0; i < dtParams.Rows.Count; i++) { if (dtParams.Rows[i][COMMON_FIELDS.FIELD_COMMON_UPDATE_NAME].ToString() == FMM_PRODUCTION_LINE_FIELDS.FIELD_LINE_CODE) { lineCode = Convert.ToString(dtParams.Rows[i][COMMON_FIELDS.FIELD_COMMON_UPDATE_NEW_VALUE]); } } //如果有修改线别代码,判断新的线别代码是否存在。 if (!string.IsNullOrEmpty(lineCode)) { string strSql = @"SELECT COUNT(*) FROM FMM_PRODUCTION_LINE WHERE LINE_CODE='" + lineCode.PreventSQLInjection() + "'"; int count = Convert.ToInt32(db.ExecuteScalar(CommandType.Text, strSql)); if (count > 0) { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "${res:FanHai.Hemera.Modules.FMM.LineManageEngine.CodeAlreadyExist}"); return(dsReturn); } } //生成更新SQL List <string> sqlCommandList = new List <string>(); DatabaseTable.BuildUpdateSqlStatements(ref sqlCommandList, new FMM_PRODUCTION_LINE_FIELDS(), dsParams.Tables[FMM_PRODUCTION_LINE_FIELDS.DATABASE_TABLE_NAME], new Dictionary <string, string>() { { FMM_PRODUCTION_LINE_FIELDS.FIELD_EDIT_TIME, null }, }, new List <string>() { FMM_PRODUCTION_LINE_FIELDS.FIELD_PRODUCTION_LINE_KEY }, FMM_PRODUCTION_LINE_FIELDS.FIELD_PRODUCTION_LINE_KEY); if (sqlCommandList.Count > 0) { dbconn = db.CreateConnection(); dbconn.Open(); //Create Transaction dbtran = dbconn.BeginTransaction(); try { foreach (string sql in sqlCommandList) { db.ExecuteNonQuery(dbtran, CommandType.Text, sql); } dbtran.Commit(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, string.Empty); } catch (Exception ex) { dbtran.Rollback(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message); LogService.LogError("UpdateLine Error: " + ex.Message); } finally { dbtran = null; //Close Connection dbconn.Close(); dbconn = null; } } } return(dsReturn); }
public override string RenameTable(DatabaseTable databaseTable, string originalTableName) { return(RenameTableTo(databaseTable, originalTableName)); }
public override string DropDefault(DatabaseTable databaseTable, DatabaseColumn databaseColumn) { return("-- drop default on " + databaseColumn.Name); }
static string TableKey(DatabaseTable table) => TableKey(table.Name, table.Schema);
/// <summary> /// 添加原因代码和类型的关联。 /// </summary> /// <param name="dsParams">包含原因代码和类型关联的数据集对象。</param> /// <returns>包含执行结果的数据集对象。</returns> public DataSet AddReasonCategory(DataSet dsParams) { DataSet dsReturn = new DataSet(); try { if (dsParams.Tables.Contains(FMM_REASON_R_CATEGORY_FIELDS.DATABASE_TABLE_NAME)) { DataTable dataTable = dsParams.Tables[FMM_REASON_R_CATEGORY_FIELDS.DATABASE_TABLE_NAME]; FMM_REASON_R_CATEGORY_FIELDS categoryTable = new FMM_REASON_R_CATEGORY_FIELDS(); using (DbConnection dbConn = db.CreateConnection()) { //Open Connection dbConn.Open(); //Create Transaction DbTransaction dbTran = dbConn.BeginTransaction(); try { foreach (DataRow row in dataTable.Rows) { Hashtable fields = new Hashtable() { { FMM_REASON_R_CATEGORY_FIELDS.FIELD_CATEGORY_KEY, row[FMM_REASON_R_CATEGORY_FIELDS.FIELD_CATEGORY_KEY] }, { FMM_REASON_R_CATEGORY_FIELDS.FIELD_REASON_CODE_KEY, row[FMM_REASON_R_CATEGORY_FIELDS.FIELD_REASON_CODE_KEY] } }; string sqlCommand = DatabaseTable.BuildInsertSqlStatement(categoryTable, fields, null); db.ExecuteNonQuery(dbTran, CommandType.Text, sqlCommand); } //Commit Transaction dbTran.Commit(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ""); } catch (Exception ex) { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message); //Rollback Transaction dbTran.Rollback(); LogService.LogError("AddReasonCategory Error: " + ex.Message); } finally { dbTran = null; //Close Connection dbConn.Close(); } } } } catch (Exception ex) { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message); LogService.LogError("AddReasonCategory Error: " + ex.Message); } return(dsReturn); }
static string ColumnKey(DatabaseTable table, string columnName) => $"{TableKey(table)}.`{columnName}`";
private DatabaseColumn GetColumn(DatabaseTable table, string columnName) => FindColumn(table, columnName) ?? throw new InvalidOperationException($"Could not find column '{columnName}' in table '{table.Name}'.");
public void Correct_arguments_to_scaffolding_typemapper() { var principalPkColumn = new DatabaseColumn { Name = "PrimaryKey", StoreType = "nvarchar(450)" }; var principalAkColumn = new DatabaseColumn { Name = "AlternateKey", StoreType = "nvarchar(450)" }; var principalIndexColumn = new DatabaseColumn { Name = "Index", StoreType = "nvarchar(450)" }; var rowversionColumn = new DatabaseColumn { Name = "Rowversion", StoreType = "rowversion", ValueGenerated = ValueGenerated.OnAddOrUpdate, [ScaffoldingAnnotationNames.ConcurrencyToken] = true }; var principalTable = new DatabaseTable { Name = "Principal", Columns = { principalPkColumn, principalAkColumn, principalIndexColumn, rowversionColumn }, PrimaryKey = new DatabasePrimaryKey { Columns = { principalPkColumn } }, UniqueConstraints = { new DatabaseUniqueConstraint { Columns = { principalAkColumn} } }, Indexes = { new DatabaseIndex { Columns = { principalIndexColumn} } } }; var dependentIdColumn = new DatabaseColumn { Name = "Id", StoreType = "int" }; var dependentFkColumn = new DatabaseColumn { Name = "BlogAlternateKey", StoreType = "nvarchar(450)" }; var dependentTable = new DatabaseTable { Name = "Dependent", Columns = { dependentIdColumn, dependentFkColumn }, PrimaryKey = new DatabasePrimaryKey { Columns = { dependentIdColumn } }, Indexes = { new DatabaseIndex { Columns = { dependentFkColumn} } }, ForeignKeys = { new DatabaseForeignKey { Columns = { dependentFkColumn }, PrincipalTable = principalTable, PrincipalColumns ={ principalAkColumn } } } }; var dbModel = new DatabaseModel { Tables = { principalTable, dependentTable } }; var model = _factory.Create(dbModel); Assert.Null(model.FindEntityType("Principal").FindProperty("PrimaryKey").Relational().ColumnType); Assert.Null(model.FindEntityType("Principal").FindProperty("AlternateKey").Relational().ColumnType); Assert.Null(model.FindEntityType("Principal").FindProperty("Index").Relational().ColumnType); Assert.Null(model.FindEntityType("Principal").FindProperty("Rowversion").Relational().ColumnType); Assert.Null(model.FindEntityType("Dependent").FindProperty("BlogAlternateKey").Relational().ColumnType); }
public void Indexes_and_alternate_keys() { var c1 = new DatabaseColumn { Name = "C1", StoreType = "long" }; var table = new DatabaseTable { Name = "T", Columns = { c1, new DatabaseColumn { Name = "C2",StoreType = "long" }, new DatabaseColumn { Name = "C3",StoreType = "long" } }, PrimaryKey = new DatabasePrimaryKey { Columns = { c1 } } }; table.Indexes.Add( new DatabaseIndex { Name = "IDX_C1", Columns = { table.Columns.ElementAt(0) }, IsUnique = false }); table.Indexes.Add( new DatabaseIndex { Name = "UNQ_C2", Columns = { table.Columns.ElementAt(1) }, IsUnique = true }); table.Indexes.Add( new DatabaseIndex { Name = "IDX_C2_C1", Columns = { table.Columns.ElementAt(1), table.Columns.ElementAt(0) }, IsUnique = false }); table.Indexes.Add( new DatabaseIndex { /*Name ="UNQ_C3_C1",*/ Columns = { table.Columns.ElementAt(2), table.Columns.ElementAt(0) }, IsUnique = true }); var info = new DatabaseModel { Tables = { table } }; var entityType = (EntityType)_factory.Create(info).GetEntityTypes().Single(); Assert.Collection( entityType.GetIndexes(), indexColumn1 => { Assert.False(indexColumn1.IsUnique); Assert.Equal("IDX_C1", indexColumn1.Relational().Name); Assert.Same(entityType.FindProperty("C1"), indexColumn1.Properties.Single()); }, uniqueColumn2 => { Assert.True(uniqueColumn2.IsUnique); Assert.Same(entityType.FindProperty("C2"), uniqueColumn2.Properties.Single()); }, indexColumn2Column1 => { Assert.False(indexColumn2Column1.IsUnique); Assert.Equal(new[] { "C2", "C1" }, indexColumn2Column1.Properties.Select(c => c.Name).ToArray()); }, uniqueColumn3Column1 => { Assert.True(uniqueColumn3Column1.IsUnique); Assert.Equal(new[] { "C3", "C1" }, uniqueColumn3Column1.Properties.Select(c => c.Name).ToArray()); } ); // unique indexes should not cause alternate keys if not used by foreign keys Assert.Equal(0, entityType.GetKeys().Count(k => !k.IsPrimaryKey())); }
private string CreateAssertCodeForJava(DatabaseTable model) { StringBuilder code = new StringBuilder(); if (model.Fileds != null) { model.Fileds.ForEach(f => { if (f.Name.Contains("createTime") || f.Name.Contains("updateTime")) { return; } switch (f.CheckRule.RuleType) { case ModelPropeprtyRuleType.NullOrEmpty: switch (f.DataType) { case DatabaseDataType.Char: case DatabaseDataType.LongText_Mariadb: case DatabaseDataType.Nchar_MsSql: case DatabaseDataType.Ntext_MsSql: case DatabaseDataType.NvarChar_MsSql: case DatabaseDataType.Text: case DatabaseDataType.VarChar: default: code.Append(string.Format("AssertHelper.AssertStringNullorEmpty(info.get{0}());\n", ParseBigName(f.Name))); break; } break; case ModelPropeprtyRuleType.Rang: switch (f.DataType) { #region 日期 case DatabaseDataType.Year: code.Append(string.Format("AssertHelper.AssertNull(info.get{0}());\n", ParseBigName(f.Name))); break; case DatabaseDataType.Time: code.Append(string.Format("AssertHelper.AssertNull(info.get{0}());\n", ParseBigName(f.Name))); break; case DatabaseDataType.Timestamp: code.Append(string.Format("AssertHelper.AssertNull(info.get{0}());\n", ParseBigName(f.Name))); break; case DatabaseDataType.Date: code.Append(string.Format("AssertHelper.AssertNull(info.get{0}());\n", ParseBigName(f.Name))); break; case DatabaseDataType.Datetime: code.Append(string.Format("AssertHelper.AssertNull(info.get{0}());\n", ParseBigName(f.Name))); break; #endregion #region bigdata case DatabaseDataType.Decimal: // code.Append(string.Format("AssertHelper.AssertRangDecimal(var{0}.{1},{2},{3});\n", model.Name, f.Name, f.CheckRule.getDecimalRang().MinVal, f.CheckRule.getDecimalRang().MaxVal)); break; case DatabaseDataType.Money_MsSql: // code.Append(string.Format("AssertHelper.AssertRangDecimal(var{0}.{1},{2},{3});\n", model.Name, f.Name, f.CheckRule.getDecimalRang().MinVal, f.CheckRule.getDecimalRang().MaxVal)); break; case DatabaseDataType.Double: code.Append(string.Format("AssertHelper.AssertRangDouble(info.get{0}(),Double.MIN_VALUE,Double.MAX_VALUE);\n", ParseBigName(f.Name))); break; case DatabaseDataType.Float: code.Append(string.Format("AssertHelper.AssertRangFloat(info.get{0}(),Float.MIN_VALUE,Float.MAX_VALUE);\n", ParseBigName(f.Name))); break; #endregion #region 整型 case DatabaseDataType.Int: code.Append(string.Format("AssertHelper.AssertRangInt(info.get{0}(),Integer.MIN_VALUE,Integer.MAX_VALUE);\n", ParseBigName(f.Name))); break; case DatabaseDataType.BigInt: code.Append(string.Format("AssertHelper.AssertRangLong(info.get{0}(),Integer.MIN_VALUE,Integer.MAX_VALUE);\n", ParseBigName(f.Name))); break; case DatabaseDataType.TinyInt: // code.Append(string.Format("AssertHelper.AssertRangByte(var{0}.{1},{2},{3});\n", model.Name, f.Name, f.CheckRule.getByteRang().MinVal, f.CheckRule.getByteRang().MaxVal)); break; #endregion } break; case ModelPropeprtyRuleType.Regex: // code.Append(string.Format("AssertHelper.AssertRegex(var{0}.{1},{2});\n", model.Name, f.Name, f.CheckRule.RegexRule)); break; } }); } return(code.ToString()); }
public void Unique_index_composite_foreign_key() { var ida = new DatabaseColumn { Name = "Id_A", StoreType = "long" }; var idb = new DatabaseColumn { Name = "Id_B", StoreType = "long" }; var parentTable = new DatabaseTable { Name = "Parent", Columns = { ida, idb }, PrimaryKey = new DatabasePrimaryKey { Columns = { ida, idb } } }; var childrenTable = new DatabaseTable { Name = "Children", Columns = { IdColumn, new DatabaseColumn { Name = "ParentId_A",StoreType = "long" }, new DatabaseColumn { Name = "ParentId_B",StoreType = "long" } }, PrimaryKey = IdPrimaryKey }; childrenTable.Indexes.Add( new DatabaseIndex { IsUnique = true, Columns = { childrenTable.Columns.ElementAt(1), childrenTable.Columns.ElementAt(2) } }); childrenTable.ForeignKeys.Add( new DatabaseForeignKey { Table = childrenTable, PrincipalTable = parentTable, Columns = { childrenTable.Columns.ElementAt(1), childrenTable.Columns.ElementAt(2) }, PrincipalColumns = { parentTable.Columns.ElementAt(0), parentTable.Columns.ElementAt(1) } }); var model = _factory.Create(new DatabaseModel { Tables = { parentTable, childrenTable } }); var parent = model.FindEntityType("Parent"); var children = model.FindEntityType("Children"); var fk = Assert.Single(children.GetForeignKeys()); Assert.True(fk.IsUnique); Assert.Equal(parent.FindPrimaryKey(), fk.PrincipalKey); }
/// <summary> /// 生成代码检查片段 /// </summary> /// <param name="model"></param> /// <param name="resultResultCode">需要返回的结果类型对象代码</param> /// <returns></returns> private string CreateCheckCode(DatabaseTable model, String returnTypeCode) { StringBuilder code = new StringBuilder(); if (model.Fileds != null) { model.Fileds.ForEach(f => { switch (f.CheckRule.RuleType) { case ModelPropeprtyRuleType.NullOrEmpty: switch (f.DataType) { case DatabaseDataType.Char: case DatabaseDataType.LongText_Mariadb: case DatabaseDataType.Nchar_MsSql: case DatabaseDataType.Ntext_MsSql: case DatabaseDataType.NvarChar_MsSql: case DatabaseDataType.Text: case DatabaseDataType.VarChar: default: code.Append(string.Format("if(CheckHelper.IsStringNullorEmpty(var{0}.{1})){{ return {2}; }}\n", model.Name, f.Name, returnTypeCode)); break; } break; case ModelPropeprtyRuleType.Rang: switch (f.DataType) { #region 日期 case DatabaseDataType.Year: code.Append(string.Format("if(!CheckHelper.IsRangDateTime(var{0}.{1},{2},{3})){{ return {4}; }}\n", model.Name, f.Name, f.CheckRule.getDateTimeRang().MinVal, f.CheckRule.getDateTimeRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Time: code.Append(string.Format("if(!CheckHelper.IsRangDateTime(var{0}.{1},{2},{3})){{ return {4};}}\n", model.Name, f.Name, f.CheckRule.getDateTimeRang().MinVal, f.CheckRule.getDateTimeRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Timestamp: code.Append(string.Format("if(!CheckHelper.IsRangDateTime(var{0}.{1},{2},{3})){{ return {4};}}\n", model.Name, f.Name, f.CheckRule.getDateTimeRang().MinVal, f.CheckRule.getDateTimeRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Date: code.Append(string.Format("if(!CheckHelper.IsRangDateTime(var{0}.{1},{2},{3})){{ return {4};}}\n", model.Name, f.Name, f.CheckRule.getDateTimeRang().MinVal, f.CheckRule.getDateTimeRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Datetime: code.Append(string.Format("if(!CheckHelper.IsRangDateTime(var{0}.{1},{2},{3})){{ return {4};}}\n", model.Name, f.Name, f.CheckRule.getDateTimeRang().MinVal, f.CheckRule.getDateTimeRang().MaxVal, returnTypeCode)); break; #endregion #region bigdata case DatabaseDataType.Decimal: code.Append(string.Format("if(!CheckHelper.IsRangDecimal(var{0}.{1},{2},{3})){{ return {4};}}\n", model.Name, f.Name, f.CheckRule.getDecimalRang().MinVal, f.CheckRule.getDecimalRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Money_MsSql: code.Append(string.Format("if(!CheckHelper.IsRangDecimal(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getDecimalRang().MinVal, f.CheckRule.getDecimalRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Double: code.Append(string.Format("if(!CheckHelper.IsRangDouble(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getDoubleRang().MinVal, f.CheckRule.getDoubleRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.Float: code.Append(string.Format("if(!CheckHelper.IsRangFloat(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getFloatRang().MinVal, f.CheckRule.getFloatRang().MaxVal, returnTypeCode)); break; #endregion #region 整型 case DatabaseDataType.Int: code.Append(string.Format("if(!CheckHelper.IsRangInt(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getIntRang().MinVal, f.CheckRule.getIntRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.BigInt: code.Append(string.Format("if(!CheckHelper.IsRangLong(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getLongRang().MinVal, f.CheckRule.getLongRang().MaxVal, returnTypeCode)); break; case DatabaseDataType.TinyInt: code.Append(string.Format("if(!CheckHelper.IsRangByte(var{0}.{1},{2},{3})){{return {4};}}\n", model.Name, f.Name, f.CheckRule.getByteRang().MinVal, f.CheckRule.getByteRang().MaxVal, returnTypeCode)); break; #endregion } break; case ModelPropeprtyRuleType.Regex: code.Append(string.Format("if(!CheckHelper.IsRegex(var{0}.{1},{2})){{return {3};}}\n", model.Name, f.Name, f.CheckRule.RegexRule, returnTypeCode)); break; } }); } return(code.ToString()); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual string GetEntityTypeName([NotNull] DatabaseTable table) => _tableNamer.GetName(Check.NotNull(table, nameof(table)));
/// <summary> /// 向工单表中插入工单信息,同时向配料单表中插入配料信息 /// </summary> /// <param name="dsParams">POR_WORK_ORDER和POR_WORK_ORDER_REC数据表和数据</param> /// <returns>返回含有操作信息的结果集</returns> public DataSet AddMaterialInformation(DataSet dsParams) { DataSet dsReturn = new DataSet(); string sqlCommand = string.Empty; POR_WORK_ORDER_REC_FIELDS MaterialsFields = new POR_WORK_ORDER_REC_FIELDS(); if (dsParams != null) { //生成向工单表插入数据的SQL List <string> sqlCommandList = new List <string>(); if (dsParams.Tables.Contains(POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME)) { DatabaseTable.BuildInsertSqlStatements(ref sqlCommandList, new POR_WORK_ORDER_FIELDS(), dsParams.Tables[POR_WORK_ORDER_FIELDS.DATABASE_TABLE_NAME], new Dictionary <string, string>() { }, new List <string>()); } //生成向配料单表插入数据的SQL if (dsParams.Tables.Contains(POR_WORK_ORDER_REC_FIELDS.DATABASE_TABLE_NAME)) { for (int i = 0; i < dsParams.Tables[POR_WORK_ORDER_REC_FIELDS.DATABASE_TABLE_NAME].Rows.Count; i++) { sqlCommand = DatabaseTable.BuildInsertSqlStatement(MaterialsFields, dsParams.Tables[POR_WORK_ORDER_REC_FIELDS.DATABASE_TABLE_NAME], i, new Dictionary <string, string> { }, new List <string>()); sqlCommandList.Add(sqlCommand); } } if (sqlCommandList.Count > 0) { DbConnection dbCon = db.CreateConnection(); dbCon.Open(); DbTransaction dbTrans = dbCon.BeginTransaction(); try { foreach (string sql in sqlCommandList) { db.ExecuteNonQuery(dbTrans, CommandType.Text, sql); } dbTrans.Commit(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ""); } catch (Exception ex) { dbTrans.Rollback(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message); LogService.LogError("MaterialsInsert Error: " + ex.Message); } finally { dbTrans = null; dbCon.Close(); dbCon = null; } } } else { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "No Work Order Tables in input paremter."); } return(dsReturn); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected virtual EntityTypeBuilder VisitTable([NotNull] ModelBuilder modelBuilder, [NotNull] DatabaseTable table) { Check.NotNull(modelBuilder, nameof(modelBuilder)); Check.NotNull(table, nameof(table)); var entityTypeName = GetEntityTypeName(table); var builder = modelBuilder.Entity(entityTypeName); var dbSetName = GetDbSetName(table); builder.Metadata.Scaffolding().DbSetName = dbSetName; builder.ToTable(table.Name, table.Schema); VisitColumns(builder, table.Columns); var keyBuilder = VisitPrimaryKey(builder, table); if (keyBuilder == null) { var errorMessage = DesignStrings.UnableToGenerateEntityType(table.DisplayName()); _reporter.WriteWarning(errorMessage); var model = modelBuilder.Model; model.RemoveEntityType(entityTypeName); model.Scaffolding().EntityTypeErrors.Add(entityTypeName, errorMessage); return(null); } VisitUniqueConstraints(builder, table.UniqueConstraints); VisitIndexes(builder, table.Indexes); builder.Metadata.AddAnnotations(table.GetAnnotations()); return(builder); }
public TableGenerator(DatabaseTable table) : base(table) { DataTypeWriter = new DataTypeWriter(); }
public void InsertListIntoTable(DatabaseTable table, List <BaseAltiumDbEntity> data) { throw new NotImplementedException(); }
/// <summary> /// 更新原因代码类型数据。 /// </summary> /// <param name="dsParams">包含原因代码类型数据的数据集对象。</param> /// <returns>包含执行结果的数据集对象。</returns> public DataSet ReasonCodeCategoryUpdate(DataSet dsParams) { DataSet dsReturn = new DataSet(); try { if (null != dsParams) { List <string> sqlCommandList = new List <string>(); if (dsParams.Tables.Contains(FMM_REASON_CODE_CATEGORY_FIELDS.DATABASE_TABLE_NAME)) { DatabaseTable.BuildUpdateSqlStatements(ref sqlCommandList, new FMM_REASON_CODE_CATEGORY_FIELDS(), dsParams.Tables[FMM_REASON_CODE_CATEGORY_FIELDS.DATABASE_TABLE_NAME], new Dictionary <string, string>() { { FMM_REASON_CODE_CATEGORY_FIELDS.FIELD_EDIT_TIME, null }, { FMM_REASON_CODE_CATEGORY_FIELDS.FIELD_EDIT_TIMEZONE, "CN-ZH" } }, new List <string>() { FMM_REASON_CODE_CATEGORY_FIELDS.FIELD_REASON_CODE_CATEGORY_KEY }, FMM_REASON_CODE_CATEGORY_FIELDS.FIELD_REASON_CODE_CATEGORY_KEY); } if (sqlCommandList.Count > 0) { DbConnection dbConn = db.CreateConnection(); dbConn.Open(); DbTransaction dbTrans = dbConn.BeginTransaction(); try { foreach (string sql in sqlCommandList) { db.ExecuteNonQuery(dbTrans, CommandType.Text, sql); } dbTrans.Commit(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ""); } catch (Exception e) { dbTrans.Rollback(); FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, e.Message); LogService.LogError("ReasonCodeCategoryUpdate Error: " + e.Message); } finally { dbConn.Close(); } } } else { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, "${res:Global.ServerMessage.M0007}"); } } catch (Exception ex) { FanHai.Hemera.Share.Common.ReturnMessageUtils.AddServerReturnMessage(dsReturn, ex.Message); LogService.LogError("ReasonCodeCategoryUpdate Error: " + ex.Message); } return(dsReturn); }
/// <summary> /// Установка соединения с базой данных. /// </summary> /// <returns>true - соединение установлено, false - не установлено.</returns> private bool EstablishDatabaseConnection() { using (FrmMicrosoftSqlConnectionEditor frmConnectionEditor = new FrmMicrosoftSqlConnectionEditor(DatabaseDefautlName)) { DialogResult dialogResult = frmConnectionEditor.ShowDialog(); if (dialogResult != DialogResult.OK) return false; // если базы данных нету на сервере if (!frmConnectionEditor.DatabaseExistsOnServer) { dialogResult = MessageBox.Show("База данных \"" + frmConnectionEditor.DatabaseName + "\" не существует на сервере.\nСоздать базу с этим именем?", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (dialogResult != DialogResult.Yes) return false; using (FrmDatabaseCreator frmDatabaseCreator = new FrmDatabaseCreator(frmConnectionEditor.SqlConnectionStringWithoutDatabaseName, frmConnectionEditor.DatabaseName)) { frmDatabaseCreator.ShowDialog(); } } string connectionString = frmConnectionEditor.SqlConnectionString; _editedTable = new TableTasks(dataGridView, connectionString); } return true; }
public override string DropConstraint(DatabaseTable databaseTable, DatabaseConstraint constraint) { return(null); //doesn't support it }