From c09173e8a38f28c3a5dbd977339e418eb7db0e44 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Tue, 21 Apr 2020 16:29:16 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20DbFirst=20DbColumnInfo?= =?UTF-8?q?=20Position=20=E5=B1=9E=E6=80=A7=EF=BC=8C=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=BD=8D=E7=BD=AE=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/DatabaseModel/DBColumnInfo.cs | 4 + FreeSql/FreeSql.xml | 296 ++++++++++-------- .../FreeSql.Provider.Dameng/DamengDbFirst.cs | 4 +- .../FreeSql.Provider.MySql/MySqlDbFirst.cs | 4 +- .../Dameng/OdbcDamengDbFirst.cs | 4 +- .../MySql/OdbcMySqlDbFirst.cs | 4 +- .../Oracle/OdbcOracleDbFirst.cs | 4 +- .../PostgreSQL/OdbcPostgreSQLDbFirst.cs | 4 +- .../SqlServer/OdbcSqlServerDbFirst.cs | 4 +- .../FreeSql.Provider.Oracle/OracleDbFirst.cs | 4 +- .../PostgreSQLDbFirst.cs | 4 +- .../SqlServerDbFirst.cs | 4 +- .../FreeSql.Provider.Sqlite/SqliteDbFirst.cs | 8 +- readme.md | 2 +- 14 files changed, 205 insertions(+), 145 deletions(-) diff --git a/FreeSql/DatabaseModel/DBColumnInfo.cs b/FreeSql/DatabaseModel/DBColumnInfo.cs index f20ee737a..1c5b99491 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 cb7ec67f2..09a5a1d6c 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 2b11cd9e0..fc926d726 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 3669cf14a..48a7b4165 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 d6eccbdc3..eb2e1ddc1 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 37e29ab56..667348596 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 35d1dd290..23c409a4e 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 e7115a26d..613e8c4b5 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 58ed15d7b..7c5eb8713 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 d84307ed9..fb01732db 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 65a9d2f08..bba4d80aa 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 96cbe84a4..ff0dd7e47 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 7c2bae80f..38b649036 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 cc4e5957e..5abda4e96 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