@{ ModelData modelData = Model; SysTableSchemaViewEntity[] sysTableSchemas = modelData.sysTableSchemas; NamespaceObject namespaceObject = modelData.NamespaceObject; } using CloudBuilder.Core.Authorization; using CloudBuilder.Core.DatabaseAccessor.Entity; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @{ string entityBase = string.Format("EntityBase<{0}>", @modelData.KeyType); if (@modelData.KeyCount > 1) { entityBase = string.Format("EntityBase<{0}>", @modelData.KeyType); } else if (@sysTableSchemas[0].Xtype.ToUpper().Trim() != "U") { entityBase = "ViewEntityBase"; } } namespace @namespaceObject.Namespace@{.Entity} { [TypeScript] [Table("@sysTableSchemas[0].TableName")] public class @sysTableSchemas[0].TableName.StringToProerty()Entity : @entityBase @if (@sysTableSchemas[0].Xtype.ToUpper().Trim() == "U") {} { public @sysTableSchemas[0].TableName.StringToProerty()Entity() { } @for (var i = 0; i < sysTableSchemas.Length; i++) { if (@sysTableSchemas[i].FieldName.ToUpper() == "ID") { continue; } if (@sysTableSchemas[i].FieldName.ToUpper() == "ROW_VERSION") { [Column("row_version")] [Timestamp] public byte[]? RowVersion { get; set; } continue; } if (@sysTableSchemas[i].Pk > 0 && @modelData.KeyCount < 2) { [Key] } if (@sysTableSchemas[i].IsIdentity > 0) { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] } if (@sysTableSchemas[i].TypeName == "decimal") { [Column("@sysTableSchemas[i].FieldName",TypeName = "@sysTableSchemas[i].TypeName(@sysTableSchemas[i].MaxLength,@sysTableSchemas[i].Scale)")] } else { [Column("@sysTableSchemas[i].FieldName")] } if (@sysTableSchemas[i].TypeOfName == "string") { public @sysTableSchemas[i].TypeOfName@{if(@sysTableSchemas[i].IsNullAble=="y"){?}} @sysTableSchemas[i].FieldName.StringToProerty() { get; set; } } else { public @sysTableSchemas[i].TypeOfName @sysTableSchemas[i].FieldName.StringToProerty() { get; set; } } } @for (var i = 0; i < sysTableSchemas.Length; i++) { public const string @sysTableSchemas[i].FieldName.ToUpper() = "@sysTableSchemas[i].FieldName.StringToProerty()"; } public const string DB_NAME_@sysTableSchemas[0].TableName.ToUpper() = "@sysTableSchemas[0].TableName"; @{ string fs = ""; } @for (var i = 0; i < sysTableSchemas.Length; i++) { if (@sysTableSchemas[i].FieldName.ToUpper() == "ID") { continue; } fs += @sysTableSchemas[i].FieldName + ","; } @{ fs = fs.Substring(0, fs.Length - 1); } public const string DB_NAME_FIELDS="@(fs)"; @for (var i = 0; i < sysTableSchemas.Length; i++) { public const string DB_@sysTableSchemas[i].FieldName.ToUpper() = "@sysTableSchemas[i].FieldName"; } public static @sysTableSchemas[0].TableName.StringToProerty()Entity GetInstance() { return new @sysTableSchemas[0].TableName.StringToProerty()Entity(); } public virtual void CopyFrom(@sysTableSchemas[0].TableName.StringToProerty()Entity source) { CopyFrom(source, true); } public virtual void CopyFrom(@sysTableSchemas[0].TableName.StringToProerty()Entity source, bool includeSystemFields) { if (source == null) { throw new NullReferenceException("Source entity is null."); } @for (var i = 0; i < sysTableSchemas.Length; i++) { if (@sysTableSchemas[i].FieldName != "created_datetime" || @sysTableSchemas[i].FieldName != "created_by" || @sysTableSchemas[i].FieldName != "updated_datetime" || @sysTableSchemas[i].FieldName != "updated_by") { this.@sysTableSchemas[i].FieldName.StringToProerty() = source.@sysTableSchemas[i].FieldName.StringToProerty(); } } if (includeSystemFields) { @for (var i = 0; i < sysTableSchemas.Length; i++) { if (@sysTableSchemas[i].FieldName == "created_datetime" || @sysTableSchemas[i].FieldName == "created_by" || @sysTableSchemas[i].FieldName == "updated_datetime" || @sysTableSchemas[i].FieldName == "updated_by") { this.@sysTableSchemas[i].FieldName.StringToProerty() = source.@sysTableSchemas[i].FieldName.StringToProerty(); } } } } public override string GetSelectFrom() { return $" select {DB_NAME_FIELDS} from { DB_NAME_@sysTableSchemas[0].TableName.ToUpper()} with(nolock) "; } public override string GetSelectCountFrom(string sqlWhere) { return $" select count(*) from { DB_NAME_@sysTableSchemas[0].TableName.ToUpper()} with(nolock) where 1=1 {sqlWhere}"; } public override string GetSelectTopFrom(int limit, int start,string orderby,string orderbytag, string sqlWhere) { if (string.IsNullOrEmpty(orderbytag) || orderbytag.Trim() != "desc") orderbytag = "asc"; @for (var i = 0; i < sysTableSchemas.Length; i++) { if (@sysTableSchemas[i].Pk > 0) { if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_@sysTableSchemas[i].FieldName.ToUpper() ; break; } } @if(sysTableSchemas.Sum(x=>x.Pk)==0) { if (string.IsNullOrEmpty(orderby) || !DB_NAME_FIELDS.Contains(orderby)) orderby = DB_@sysTableSchemas[0].FieldName.ToUpper() ; } string top = limit > 0 ? $"top {limit}" : ""; return $" select {top} {DB_NAME_FIELDS} from (select {DB_NAME_FIELDS} ,row_number() over(order by {orderby} {orderbytag}) as num from { DB_NAME_@sysTableSchemas[0].TableName.ToUpper()} with(nolock) where 1=1 {sqlWhere} ) a where num> {limit * (start - 1)}"; } public @sysTableSchemas[0].TableName.StringToProerty()Entity Clone() { @sysTableSchemas[0].TableName.StringToProerty()Entity result = new @sysTableSchemas[0].TableName.StringToProerty()Entity(); result.CopyFrom(this); return result; } } }