diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index a6a508398..311f03831 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 004101065..98cec1d37 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 319fdfbf1..be8559fe2 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 ed20c3ba0..f58d1305e 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 681940381..271a76bf4 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 efa927791..43176a37f 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 a9e24fc53..95cd27200 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 9b8e95e70..d46ae080e 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 2642bf0ca..48bfefbdd 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 5d0b0a301..59fa573c3 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 94af3999b..4369ea873 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 e11d0b2b9..5c2dc9c0f 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 58274df02..346a806cf 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 cf5e48348..7e334513c 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 b96b1eeca..094a3afa1 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 8031a61f6..6c6f93d5d 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 c32f9287c..20723d8bb 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 65c62fc17..d3634ce26 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 0612f43d6..8d1d81d7f 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 8254462b9..92e873e30 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);