public ActionResult GetPlistTableColumns(GetPlistTableColumns requestModel) { if (!ModelState.IsValid) { return(ModelState.ToJsonResult()); } var data = AcDomain.GetPlistTableColumns(requestModel); Debug.Assert(requestModel.Total != null, "requestModel.total != null"); return(this.JsonResult(new MiniGrid <DbTableColumn> { total = requestModel.Total.Value, data = data })); }
public static IQueryable<DbTableColumn> GetPlistTableColumns(this IAcDomain acDomain, GetPlistTableColumns requestModel) { if (!requestModel.DatabaseId.HasValue) { throw new ValidationException("databaseId为空"); } RdbDescriptor db; if (!acDomain.Rdbs.TryDb(requestModel.DatabaseId.Value, out db)) { throw new ValidationException("意外的数据库Id"); } DbTable dbTable; if (!db.TryGetDbTable(requestModel.TableId, out dbTable)) { throw new ValidationException("意外的数据库表名" + requestModel.TableName); } var properties = new HashSet<string>() { "DatabaseId", "Id", "CatalogName", "DateTimePrecision", "DefaultValue", "Description", "IsIdentity", "IsNullable", "IsPrimaryKey", "IsStoreGenerated", "MaxLength", "Name", "Ordinal", "Precision", "Scale", "SchemaName", "TableName", "TypeName" }; foreach (var filter in requestModel.Filters) { if (!properties.Contains(filter.field)) { throw new ValidationException("意外的DbTableColumn实体类型属性" + filter.field); } } int pageIndex = requestModel.PageIndex; int pageSize = requestModel.PageSize; IReadOnlyDictionary<string, DbTableColumn> dbTableColumns; if (!acDomain.Rdbs.DbTableColumns.TryGetDbTableColumns(db, dbTable, out dbTableColumns)) { throw new AnycmdException("意外的数据库表列"); } var queryable = dbTableColumns.Values.Select(a => a).AsQueryable(); foreach (var filter in requestModel.Filters) { queryable = queryable.Where(filter.ToPredicate(), filter.value); } requestModel.Total = queryable.Count(); return queryable.OrderBy(requestModel.SortField + " " + requestModel.SortOrder).Skip(pageIndex * pageSize).Take(pageSize); }
public static IQueryable <DbTableColumn> GetPlistTableColumns(this IAcDomain acDomain, GetPlistTableColumns requestModel) { if (!requestModel.DatabaseId.HasValue) { throw new ValidationException("databaseId为空"); } RdbDescriptor db; if (!acDomain.RdbSet.TryDb(requestModel.DatabaseId.Value, out db)) { throw new ValidationException("意外的数据库Id"); } DbTable dbTable; if (!db.TryGetDbTable(requestModel.TableId, out dbTable)) { throw new ValidationException("意外的数据库表名" + requestModel.TableName); } var properties = new HashSet <string>() { "DatabaseId", "Id", "CatalogName", "DateTimePrecision", "DefaultValue", "Description", "IsIdentity", "IsNullable", "IsPrimaryKey", "IsStoreGenerated", "MaxLength", "Name", "Ordinal", "Precision", "Scale", "SchemaName", "TableName", "TypeName" }; foreach (var filter in requestModel.Filters) { if (!properties.Contains(filter.field)) { throw new ValidationException("意外的DbTableColumn实体类型属性" + filter.field); } } int pageIndex = requestModel.PageIndex; int pageSize = requestModel.PageSize; IReadOnlyDictionary <string, DbTableColumn> dbTableColumns; if (!acDomain.RdbSet.DbTableColumns.TryGetDbTableColumns(db, dbTable, out dbTableColumns)) { throw new GeneralException("意外的数据库表列"); } var queryable = dbTableColumns.Values.Select(a => a).AsQueryable(); foreach (var filter in requestModel.Filters) { queryable = queryable.Where(filter.ToPredicate(), filter.value); } requestModel.Total = queryable.Count(); return(queryable.OrderBy(requestModel.SortField + " " + requestModel.SortOrder).Skip(pageIndex * pageSize).Take(pageSize)); }
public ActionResult GetPlistTableColumns(GetPlistTableColumns requestModel) { if (!ModelState.IsValid) { return ModelState.ToJsonResult(); } var data = AcDomain.GetPlistTableColumns(requestModel); Debug.Assert(requestModel.Total != null, "requestModel.total != null"); return this.JsonResult(new MiniGrid<DbTableColumn> { total = requestModel.Total.Value, data = data }); }