From 58240836bf2b9d2c1b79b352af8266a3674e3f66 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Wed, 15 Jul 2020 11:49:36 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=A1=A5=E5=85=85=20Ado.ExecuteDataTable?= =?UTF-8?q?=20Columns=20=E5=8C=85=E5=90=AB=20DataType=20=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 1 + .../MySqlConnector/MySqlCodeFirstTest.cs | 1 + .../FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs | 1 + .../FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs | 1 + .../KingbaseES/KingbaseESCodeFirstTest.cs | 1 + .../FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs | 1 + .../FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs | 1 + .../PostgreSQL/PostgreSQLCodeFirstTest.cs | 1 + .../SqlServer/SqlServerCodeFirstTest.cs | 1 + .../PostgreSQL/PostgreSQLCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/Dameng/DamengCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs | 1 + .../FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongCodeFirstTest.cs | 1 + .../FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs | 1 + FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs | 1 + FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs | 4 ++-- .../Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs | 4 ++-- 20 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index a6a50839..311f0383 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -205,6 +205,7 @@ namespace base_entity new S_SysConfig { Name = "testkey22", Config = new TestConfig { clicks = 22, title = "testtitle22" }, Config2 = new TestConfig { clicks = 11, title = "testtitle11" } }.Save(); new S_SysConfig { Name = "testkey33", Config = new TestConfig { clicks = 33, title = "testtitle33" }, Config2 = new TestConfig { clicks = 11, title = "testtitle11" } }.Save(); var testconfigs11 = S_SysConfig.Select.ToList(); + var testconfigs11tb = S_SysConfig.Select.ToDataTable(); var testconfigs111 = S_SysConfig.Select.ToList(a => a.Name); var testconfigs112 = S_SysConfig.Select.ToList(a => a.Config); var testconfigs1122 = S_SysConfig.Select.ToList(a => new { a.Name, a.Config }); diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs index 00410106..98cec1d3 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlCodeFirstTest.cs @@ -417,6 +417,7 @@ namespace FreeSql.Tests.MySqlConnector Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs index 319fdfbf..be8559fe 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Dameng/DamengCodeFirstTest.cs @@ -295,6 +295,7 @@ namespace FreeSql.Tests.Odbc.Dameng Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs index ed20c3ba..f58d1305 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Default/OdbcCodeFirstTest.cs @@ -123,6 +123,7 @@ namespace FreeSql.Tests.Odbc.Default Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype_notime")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESCodeFirstTest.cs index 68194038..271a76bf 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/KingbaseES/KingbaseESCodeFirstTest.cs @@ -270,6 +270,7 @@ namespace FreeSql.Tests.Odbc.KingbaseES Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs index efa92779..43176a37 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlCodeFirstTest.cs @@ -271,6 +271,7 @@ namespace FreeSql.Tests.Odbc.MySql Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs index a9e24fc5..95cd2720 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleCodeFirstTest.cs @@ -294,6 +294,7 @@ namespace FreeSql.Tests.Odbc.Oracle Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs index 9b8e95e7..d46ae080 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLCodeFirstTest.cs @@ -208,6 +208,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQL Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs index 2642bf0c..48bfefbd 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerCodeFirstTest.cs @@ -240,6 +240,7 @@ namespace FreeSql.Tests.Odbc.SqlServer Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [JsonObject(MemberSerialization.OptIn), Table(Name = "dbo.tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.PostgreSQL.NetTopologySuite/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.PostgreSQL.NetTopologySuite/PostgreSQL/PostgreSQLCodeFirstTest.cs index 5d0b0a30..59fa573c 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.PostgreSQL.NetTopologySuite/PostgreSQL/PostgreSQLCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.PostgreSQL.NetTopologySuite/PostgreSQL/PostgreSQLCodeFirstTest.cs @@ -268,6 +268,7 @@ namespace FreeSql.Tests.PostgreSQL.NetTopologySuite Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype_nts")] diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/DamengCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/DamengCodeFirstTest.cs index 94af3999..4369ea87 100644 --- a/FreeSql.Tests/FreeSql.Tests/Dameng/DamengCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Dameng/DamengCodeFirstTest.cs @@ -361,6 +361,7 @@ namespace FreeSql.Tests.Dameng Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs index e11d0b2b..5c2dc9c0 100644 --- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs @@ -286,6 +286,7 @@ namespace FreeSql.Tests.MsAccess Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs index 58274df0..346a806c 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs @@ -422,6 +422,7 @@ namespace FreeSql.Tests.MySql Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs index cf5e4834..7e334513 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleCodeFirstTest.cs @@ -395,6 +395,7 @@ namespace FreeSql.Tests.Oracle Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs index b96b1eec..094a3afa 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs @@ -426,6 +426,7 @@ namespace FreeSql.Tests.PostgreSQL Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongCodeFirstTest.cs index 8031a61f..6c6f93d5 100644 --- a/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/ShenTong/ShenTongCodeFirstTest.cs @@ -251,6 +251,7 @@ namespace FreeSql.Tests.ShenTong Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs index c32f9287..20723d8b 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerCodeFirstTest.cs @@ -276,6 +276,7 @@ namespace FreeSql.Tests.SqlServer Assert.Equal(item2.testFieldString, newitem2.testFieldString); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [JsonObject(MemberSerialization.OptIn), Table(Name = "dbo.tb_alltype")] diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs index 65c62fc1..d3634ce2 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs @@ -347,6 +347,7 @@ namespace FreeSql.Tests.Sqlite Assert.Equal(item2.String, newitem2.String); var items = select.ToList(); + var itemstb = select.ToDataTable(); } [Table(Name = "tb_alltype")] diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs index 0612f43d..8d1d81d7 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs @@ -675,7 +675,7 @@ namespace FreeSql.Internal.CommonProvider { var name = dr.GetName(a); if (dt.Columns.Contains(name)) name = $"{name}_{Guid.NewGuid().ToString("N").Substring(0, 4)}"; - dt.Columns.Add(name); + dt.Columns.Add(name, dr.GetFieldType(a)); } } object[] values = new object[dt.Columns.Count]; @@ -699,7 +699,7 @@ namespace FreeSql.Internal.CommonProvider { var name = dr.GetName(a); if (ret.Columns.Contains(name)) name = $"{name}_{Guid.NewGuid().ToString("N").Substring(0, 4)}"; - ret.Columns.Add(name); + ret.Columns.Add(name, dr.GetFieldType(a)); } object[] values = new object[ret.Columns.Count]; dr.GetValues(values); diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs index 8254462b..92e873e3 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProviderAsync.cs @@ -598,7 +598,7 @@ namespace FreeSql.Internal.CommonProvider { var name = dr.GetName(a); if (dt.Columns.Contains(name)) name = $"{name}_{Guid.NewGuid().ToString("N").Substring(0, 4)}"; - dt.Columns.Add(name); + dt.Columns.Add(name, dr.GetFieldType(a)); } } object[] values = new object[dt.Columns.Count]; @@ -622,7 +622,7 @@ namespace FreeSql.Internal.CommonProvider { var name = dr.GetName(a); if (ret.Columns.Contains(name)) name = $"{name}_{Guid.NewGuid().ToString("N").Substring(0, 4)}"; - ret.Columns.Add(name); + ret.Columns.Add(name, dr.GetFieldType(a)); } object[] values = new object[ret.Columns.Count]; for (int a = 0; a < values.Length; a++) if (!await dr.IsDBNullAsync(a)) values[a] = await dr.GetFieldValueAsync(a);