From d84657ad276c9a9242a61032b11e5e7b742ac210 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 5 Aug 2022 19:51:11 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20SqlServer=20DbFirst=20?= =?UTF-8?q?=E6=9C=AA=E8=8E=B7=E5=8F=96=E5=AD=97=E6=AE=B5=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B#1204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs | 6 ++++++ Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs index 8898e5a7..a71ff5cb 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs @@ -2250,6 +2250,12 @@ FROM ""TestTypeParentInfo_01"" a", asTableSubSql); Assert.Equal(2, g.sqlite.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").ExecuteAffrows()); Assert.Equal(5, g.sqlite.Select().Count()); Assert.Equal(5, g.sqlite.Select().Where(a => a.name.StartsWith("nick")).Count()); + + var sql = g.sqlite.Select().Where(a => a.name.StartsWith("name")).ToUpdate().Set(a => a.name, "nick?").Set(a => a.pk3, "pk3?").ToSql(); + Assert.Equal(@"UPDATE ""ToUpd3Pk"" SET ""name"" = @p_0, ""pk3"" = @p_1 +WHERE (""pk1"" || ',ftb_upd,' || ""pk2"" || ',ftb_upd,' || ""pk3"" in (select * from (SELECT a.""pk1"" || ',ftb_upd,' || a.""pk2"" || ',ftb_upd,' || a.""pk3"" as as1 +FROM ""ToUpd3Pk"" a +WHERE ((a.""name"") LIKE 'name%')) ftb_upd))", sql); } [Fact] diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs index 66c4d74c..eab58d30 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerDbFirst.cs @@ -289,6 +289,7 @@ where {1} ,a.is_nullable 'isnullable' ,a.is_identity 'isidentity' ,f.text as 'defaultvalue' +,a.column_id as 'position' from sys.columns", loc8.ToString().Replace("a.table_name", "a.object_id"), @" left join syscomments f on f.id = a.default_object_id "); @@ -301,13 +302,13 @@ left join syscomments f on f.id = a.default_object_id ,cast(0 as bit) 'isnullable' ,a.is_output 'isidentity' ,'' as 'defaultvalue' +,1 as 'position' from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), ""); } sql = $"use [{db}];{sql};use [{olddatabase}]; "; 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]); @@ -320,6 +321,7 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " var is_nullable = bool.Parse(string.Concat(row[7])); var is_identity = bool.Parse(string.Concat(row[8])); var defaultValue = string.Concat(row[9]); + var position = int.Parse(string.Concat(row[10])); if (max_length == 0) max_length = -1; loc3[object_id].Add(column, new DbColumnInfo @@ -334,7 +336,7 @@ from sys.parameters", loc88.ToString().Replace("a.table_name", "a.object_id"), " Table = loc2[object_id], Comment = comment, DefaultValue = defaultValue, - Position = ++position + Position = position }); loc3[object_id][column].DbType = this.GetDbType(loc3[object_id][column]); loc3[object_id][column].CsType = this.GetCsTypeInfo(loc3[object_id][column]);