private static MethodDefinition GetToRequestModelMethod(AspNetCoreProject project, ITable table) { var lines = new List <ILine>(); lines.Add(new CodeLine("return new {0}", table.GetRequestModelName())); lines.Add(new CodeLine("{")); var selection = project.GetSelection(table); var columns = table.Columns.Where(item => item.Name != selection.Settings.ConcurrencyToken).ToList(); for (var i = 0; i < columns.Count; i++) { var column = columns[i]; lines.Add(new CodeLine(1, "{0} = entity.{0}{1}", column.GetPropertyName(), i < columns.Count - 1 ? "," : string.Empty)); } lines.Add(new CodeLine("};")); return(new MethodDefinition(table.GetRequestModelName(), "ToRequestModel", new ParameterDefinition(table.GetEntityName(), "entity")) { IsStatic = true, IsExtension = true, Lines = lines }); }
public static RequestClassDefinition GetRequestClassDefinition(this AspNetCoreProject project, ITable table) { var definition = new RequestClassDefinition { Namespaces = { "System", "System.ComponentModel.DataAnnotations", project.Database.HasDefaultSchema(table) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(table.Schema) }, Namespace = project.GetRequestsNamespace(), Name = project.GetRequestName(table) }; var selection = project.GetSelection(table); foreach (var column in table.Columns.Where(item => selection.Settings.ConcurrencyToken != item.Name).ToList()) { var property = new PropertyDefinition(project.Database.ResolveDatabaseType(column), column.GetPropertyName()); if (table.PrimaryKey?.Key.Count > 0 && table.PrimaryKey?.Key.First() == column.Name) { property.Attributes.Add(new MetadataAttribute("Key")); } if (!column.Nullable && table.PrimaryKey?.Key.Count > 0 && table.PrimaryKey?.Key.First() != column.Name) { property.Attributes.Add(new MetadataAttribute("Required")); } if (project.Database.ColumnIsString(column) && column.Length > 0) { property.Attributes.Add(new MetadataAttribute("StringLength", column.Length.ToString())); } definition.Properties.Add(property); } definition.SimplifyDataTypes(); return(definition); }