diff --git a/FreeSql/DatabaseModel/DBColumnInfo.cs b/FreeSql/DatabaseModel/DBColumnInfo.cs index f20ee737..1c5b9949 100644 --- a/FreeSql/DatabaseModel/DBColumnInfo.cs +++ b/FreeSql/DatabaseModel/DBColumnInfo.cs @@ -52,5 +52,9 @@ namespace FreeSql.DatabaseModel /// 数据库默认值 /// public string DefaultValue { get; set; } + /// + /// 字段位置 + /// + public int Position { get; set; } } } diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index cb7ec67f..09a5a1d6 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -445,6 +445,11 @@ 数据库默认值 + + + 字段位置 + + 枚举类型标识 @@ -2305,137 +2310,6 @@ - - - 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 - - - - - - - - - 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > ?age", new { age = 25 }) - - - - - - - 查询 - - - - - - - 查询,ExecuteArrayAsync("select * from user where age > ?age", new { age = 25 }) - - - - - - - - 查询 - - - - - - - 查询,ExecuteDataSetAsync("select * from user where age > ?age; select 2", new { age = 25 }) - - - - - - - - 查询 - - - - - - - 查询,ExecuteDataTableAsync("select * from user where age > ?age", new { age = 25 }) - - - - - - - - 在【主库】执行 - - - - - - - - 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > ?age", new { age = 25 }) - - - - - - - - 在【主库】执行 - - - - - - - - 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > ?age", new { age = 25 }) - - - - - - - - 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new SqlParameter { ParameterName = "age", Value = 25 }) - - - - - - - - - - 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new { age = 25 }) - - - - - - - - - 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 }) - - - - - - - - - - 执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new { age = 25 }) - - - - - - 可自定义解析表达式 @@ -2956,6 +2830,166 @@ 超时 + + + 使用完毕后,归还资源 + + 对象 + 是否重新创建 + + + + 名称 + + + + + 池容量 + + + + + 默认获取超时设置 + + + + + 空闲时间,获取时若超出,则重新创建 + + + + + 异步获取排队队列大小,小于等于0不生效 + + + + + 获取超时后,是否抛出异常 + + + + + 监听 AppDomain.CurrentDomain.ProcessExit/Console.CancelKeyPress 事件自动释放 + + + ry> + 获取c#值 + + + + + + + 获取c#类型,int、long + + + + + + + 获取c#类型对象 + + + + + + + 获取ado.net读取方法, GetBoolean、GetInt64 + + + + + + + 序列化 + + + + + + + 反序列化 + + + + + + + 获取数据库枚举类型,适用 PostgreSQL + + + + + + + AsType, Ctor, ClearData 三处地方需要重新加载 + + + + + AsType, Ctor, ClearData 三处地方需要重新加载 + + + + + 通过属性的注释文本,通过 xml 读取 + + + Dict:key=属性名,value=注释 + + + + 创建一个过滤器 + + + 名字 + 表达式 + + + + + 中间表,多对多 + + + + + 是否可用 + + + + + 不可用错误 + + + + + 不可用时间 + + + + + 将对象池设置为不可用,后续 Get/GetAsync 均会报错,同时启动后台定时检查服务恢复可用 + + + 由【可用】变成【不可用】时返回true,否则返回false + + + + 统计对象池中的对象 + + + + + 统计对象池中的对象(完整) + + + + + 获取资源 + + 超时 + + 获取资源 diff --git a/Providers/FreeSql.Provider.Dameng/DamengDbFirst.cs b/Providers/FreeSql.Provider.Dameng/DamengDbFirst.cs index 2b11cd9e..fc926d72 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengDbFirst.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengDbFirst.cs @@ -330,6 +330,7 @@ where a.owner in ({1}) and {0} ds2item[8] = string.Concat(row[10]); ds2.Add(ds2item); } + var position = 0; foreach (var row in ds2) { string table_id = string.Concat(row[0]); @@ -359,7 +360,8 @@ where a.owner in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.MySql/MySqlDbFirst.cs b/Providers/FreeSql.Provider.MySql/MySqlDbFirst.cs index 3669cf14..48a7b416 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlDbFirst.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlDbFirst.cs @@ -246,6 +246,7 @@ where a.table_schema in ({1}) and {0} ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (var row in ds) { string table_id = string.Concat(row[0]); @@ -275,7 +276,8 @@ where a.table_schema in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs index d6eccbdc..eb2e1ddc 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengDbFirst.cs @@ -330,6 +330,7 @@ where a.owner in ({1}) and {0} ds2item[8] = string.Concat(row[10]); ds2.Add(ds2item); } + var position = 0; foreach (var row in ds2) { string table_id = string.Concat(row[0]); @@ -359,7 +360,8 @@ where a.owner in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlDbFirst.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlDbFirst.cs index 37e29ab5..66734859 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlDbFirst.cs @@ -216,6 +216,7 @@ where a.table_schema in ({1}) and {0} ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (var row in ds) { string table_id = string.Concat(row[0]); @@ -245,7 +246,8 @@ where a.table_schema in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs index 35d1dd29..23c409a4 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleDbFirst.cs @@ -303,6 +303,7 @@ where a.owner in ({1}) and {0} ds2item[8] = string.Concat(row[10]); ds2.Add(ds2item); } + var position = 0; foreach (var row in ds2) { string table_id = string.Concat(row[0]); @@ -332,7 +333,8 @@ where a.owner in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs index e7115a26..613e8c4b 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs @@ -228,6 +228,7 @@ where {loc8.ToString().Replace("a.table_name", "ns.nspname || '.' || c.relname") ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (object[] row in ds) { var object_id = string.Concat(row[0]); @@ -275,7 +276,8 @@ where {loc8.ToString().Replace("a.table_name", "ns.nspname || '.' || c.relname") DbTypeTextFull = sqlType, Table = loc2[object_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[object_id][column].DbType = this.GetDbType(loc3[object_id][column]); loc3[object_id][column].CsType = this.GetCsTypeInfo(loc3[object_id][column]); diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs index 58ed15d7..7c5eb871 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerDbFirst.cs @@ -268,6 +268,7 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (object[] row in ds) { var table_id = string.Concat(row[0]); @@ -293,7 +294,8 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " DbTypeTextFull = sqlType, Table = loc2[object_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[object_id][column].DbType = this.GetDbType(loc3[object_id][column]); loc3[object_id][column].CsType = this.GetCsTypeInfo(loc3[object_id][column]); diff --git a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs index d84307ed..fb01732d 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleDbFirst.cs @@ -303,6 +303,7 @@ where a.owner in ({1}) and {0} ds2item[8] = string.Concat(row[10]); ds2.Add(ds2item); } + var position = 0; foreach (var row in ds2) { string table_id = string.Concat(row[0]); @@ -332,7 +333,8 @@ where a.owner in ({1}) and {0} DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs index 65a9d2f0..bba4d80a 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs @@ -338,6 +338,7 @@ where {loc8.ToString().Replace("a.table_name", "ns.nspname || '.' || c.relname") ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (object[] row in ds) { var object_id = string.Concat(row[0]); @@ -385,7 +386,8 @@ where {loc8.ToString().Replace("a.table_name", "ns.nspname || '.' || c.relname") DbTypeTextFull = sqlType, Table = loc2[object_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[object_id][column].DbType = this.GetDbType(loc3[object_id][column]); loc3[object_id][column].CsType = this.GetCsTypeInfo(loc3[object_id][column]); diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs index 96cbe84a..ff0dd7e4 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs @@ -271,6 +271,7 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " ds = _orm.Ado.ExecuteArray(CommandType.Text, sql); if (ds == null) return loc1; + var position = 0; foreach (object[] row in ds) { var table_id = string.Concat(row[0]); @@ -296,7 +297,8 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " DbTypeTextFull = sqlType, Table = loc2[object_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = ++position }); loc3[object_id][column].DbType = this.GetDbType(loc3[object_id][column]); loc3[object_id][column].CsType = this.GetCsTypeInfo(loc3[object_id][column]); diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteDbFirst.cs b/Providers/FreeSql.Provider.Sqlite/SqliteDbFirst.cs index 7c2bae80..38b64903 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteDbFirst.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteDbFirst.cs @@ -159,7 +159,7 @@ namespace FreeSql.Sqlite if (database == null || database.Any() == false) database = GetDatabases().ToArray(); if (database.Any() == false) return loc1; - Action addColumn = row => + Action addColumn = (row, position) => { string table_id = string.Concat(row[0]); string column = string.Concat(row[1]); @@ -185,7 +185,8 @@ namespace FreeSql.Sqlite DbTypeTextFull = sqlType, Table = loc2[table_id], Coment = comment, - DefaultValue = defaultValue + DefaultValue = defaultValue, + Position = position }); loc3[table_id][column].DbType = this.GetDbType(loc3[table_id][column]); loc3[table_id][column].CsType = this.GetCsTypeInfo(loc3[table_id][column]); @@ -247,6 +248,7 @@ from {db}.sqlite_master where type = 'table'"; { var dsql = string.Concat(row[5]); var cols = _orm.Ado.ExecuteArray(CommandType.Text, $"PRAGMA \"{db}\".table_info(\"{table}\")"); + var position = 0; foreach (var col in cols) { var col_name = string.Concat(col[1]); @@ -268,7 +270,7 @@ from {db}.sqlite_master where type = 'table'"; ds2item[7] = string.Concat(col[5]) == "1" ? 1 : 0; ds2item[8] = ""; ds2item[9] = string.Concat(col[4]); - addColumn(ds2item); + addColumn(ds2item, ++position); } var fks = _orm.Ado.ExecuteArray(CommandType.Text, $"PRAGMA \"{db}\".foreign_key_list(\"{table}\")"); diff --git a/readme.md b/readme.md index cc4e5957..5abda4e9 100644 --- a/readme.md +++ b/readme.md @@ -204,7 +204,7 @@ Elapsed: 00:00:00.6495301; Query Entity Counts: 131072; ORM: Dapper ## Donation -L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元 +L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元 > Thank you for your donation