/// <summary> /// Get object by ID /// Primary Key attribute must be set /// </summary> /// <param name="id"></param> /// <param name="repository"></param> /// <param name="type"></param> /// <returns></returns> internal static object GetSqlById(long id, ICustomRepository repository, Type type) { var sqlKey = type.GetActualType().FullName + "GetById"; if (!CachedSql.ContainsKey(sqlKey)) { var key = type.GetActualType().GetPrimaryKey().GetPropertyName(); CachedSql.Add(sqlKey, Querys.Select(type.GetActualType(), repository.GetDataBaseType() == DataBaseTypes.Sqllight).Where.Column <long>(key).Equal("@ID", true).Execute()); } var cmd = repository.GetSqlCommand(CachedSql[sqlKey]); repository.AddInnerParameter(cmd, "@ID", id, System.Data.SqlDbType.BigInt); if (type.IsGenericType && type.GetGenericTypeDefinition()?.Name == "List`1" && type.GenericTypeArguments.Length > 0) { return(repository.GetLightDataTable(cmd).Rows.ToObject(type)); } return(repository.GetLightDataTable(cmd).Rows.FirstOrDefault()?.ToObject(type)); }
/// <summary> /// Get all by object /// PrimaryKey attr must be set /// </summary> /// <typeparam name="T"></typeparam> /// <param name="repository"></param> /// <param name="quary"></param> /// <param name="type"></param> /// <returns></returns> internal static IList GetSqlAll(ICustomRepository repository, Type type) { var sqlKey = type.FullName + "GetSqlAll"; if (!CachedSql.ContainsKey(sqlKey)) { CachedSql.Add(sqlKey, Querys.Select(type, repository.GetDataBaseType() == DataBaseTypes.Sqllight).Execute()); } return(repository.GetLightDataTable(repository.GetSqlCommand(CachedSql[sqlKey])).Rows.ToObject(type)); }
/// <summary> /// Get all by object /// Get object by column, as fogenKey /// </summary> /// <typeparam name="T"></typeparam> /// <param name="column"></param> /// <param name="repository"></param> /// <param name="quary"></param> /// <param name="id"></param> /// <param name="type"></param> /// <returns></returns> private static object GetByColumn(long id, string column, ICustomRepository repository, Type type) { var sqlKey = type.FullName + "GetByColumn" + column; if (!CachedSql.ContainsKey(sqlKey)) { CachedSql.Add(sqlKey, Querys.Select(type).Where.Column <long>(column).Equal("@ID", true).Execute()); } var cmd = repository.GetSqlCommand(CachedSql[sqlKey]); repository.AddInnerParameter(cmd, "@ID", id, System.Data.SqlDbType.BigInt); if (type.IsGenericType && type.GetGenericTypeDefinition()?.Name == "List`1" && type.GenericTypeArguments.Length > 0) { return(repository.GetLightDataTable(cmd).Rows.ToObject(type)); } return(repository.GetLightDataTable(cmd).Rows.FirstOrDefault()?.ToObject(type)); }
internal static ILightDataTable Select(ICustomRepository repository, Type type, QueryItem quary = null) { var sql = new StringBuilder(); sql.Append(Querys.Select(type, repository.GetDataBaseType() == DataBaseTypes.Sqllight).Execute()); if (quary != null && quary.HasValue()) { sql.Append(quary.Execute()); } return(repository.GetLightDataTable(repository.GetSqlCommand(sql.ToString()))); }
/// <summary> /// Get all by object /// PrimaryKey attr must be set ins Where /// </summary> /// <typeparam name="T"></typeparam> /// <param name="repository"></param> /// <param name="quary"></param> /// <returns></returns> internal static List <T> Where <T>(ICustomRepository repository, string quary = null) where T : class { var type = typeof(T); var sql = new StringBuilder(); sql.Append(Querys.Select(type, repository.GetDataBaseType() == DataBaseTypes.Sqllight).Execute()); if (!string.IsNullOrEmpty(quary)) { sql = new StringBuilder(quary); } return(repository.GetLightDataTable(repository.GetSqlCommand(sql.ToString())).Rows.ToObject <T>()); }
/// <summary> /// Get all by object /// PrimaryKey attr must be set ins Where /// </summary> /// <typeparam name="T"></typeparam> /// <param name="repository"></param> /// <param name="quary"></param> /// <returns></returns> internal static List <T> Select <T>(ICustomRepository repository, QueryItem quary = null) where T : class { var type = typeof(T); var sql = new StringBuilder(); sql.Append(Querys.Select(type, repository.GetDataBaseType() == DataBaseTypes.Sqllight).Execute()); if (quary != null && quary.HasValue()) { sql.Append(quary.Execute()); } return(repository.GetLightDataTable(repository.GetSqlCommand(sql.ToString())).Rows.ToObject <T>()); }
private static ILightDataTable ObjectColumns(this ICustomRepository repository, Type type) { if (CachedObjectColumn.ContainsKey(type)) { return(CachedObjectColumn[type]); } var table = type.GetCustomAttribute <Table>()?.Name ?? type.Name; var cmd = repository.GetSqlCommand("SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'" + table + "'"); var data = repository.GetLightDataTable(cmd, "COLUMN_NAME"); CachedObjectColumn.Add(type, data); return(CachedObjectColumn[type]); }
private static ILightDataTable ObjectColumns(this ICustomRepository repository, Type type) { if (CachedObjectColumn.ContainsKey(type)) { return(CachedObjectColumn[type]); } var table = type.GetCustomAttribute <Table>()?.Name ?? type.Name; var cmd = repository.GetSqlCommand(repository.GetDataBaseType() == DataBaseTypes.Mssql ? "SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'" + table + "'" : "SELECT name as COLUMN_NAME, type as DATA_TYPE FROM pragma_table_info('" + table + "');"); var data = repository.GetLightDataTable(cmd, "COLUMN_NAME"); if (data.Rows.Any()) { CachedObjectColumn.Add(type, data); } else { return(data); } return(CachedObjectColumn[type]); }