mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 增加 IUpdate.SetSource 批量更新时指定主键;#337
This commit is contained in:
		@@ -30,15 +30,15 @@ namespace FreeSql.Odbc.Dameng
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" || '+' || ");
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
@@ -49,14 +49,14 @@ namespace FreeSql.Odbc.Dameng
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            sb.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d)));
 | 
			
		||||
 
 | 
			
		||||
@@ -27,15 +27,15 @@ namespace FreeSql.Odbc.Default
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" + '+' + ");
 | 
			
		||||
                caseWhen.Append(_utils.Adapter.CastSql(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)), _utils.Adapter.MappingOdbcTypeVarChar));
 | 
			
		||||
@@ -46,13 +46,13 @@ namespace FreeSql.Odbc.Default
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" + '+' + ");
 | 
			
		||||
                sb.Append(_utils.Adapter.CastSql(_commonUtils.FormatSql("{0}", pk.GetDbValue(d)), _utils.Adapter.MappingOdbcTypeVarChar));
 | 
			
		||||
 
 | 
			
		||||
@@ -71,16 +71,16 @@ namespace FreeSql.Odbc.KingbaseES
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                if (string.IsNullOrEmpty(InternalTableAlias) == false) caseWhen.Append(InternalTableAlias).Append(".");
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" || '+' || ");
 | 
			
		||||
                if (string.IsNullOrEmpty(InternalTableAlias) == false) caseWhen.Append(InternalTableAlias).Append(".");
 | 
			
		||||
@@ -92,14 +92,14 @@ namespace FreeSql.Odbc.KingbaseES
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            sb.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d))).Append("::text");
 | 
			
		||||
 
 | 
			
		||||
@@ -70,15 +70,15 @@ namespace FreeSql.Odbc.MySql
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("CONCAT(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(", '+', ");
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
@@ -89,14 +89,14 @@ namespace FreeSql.Odbc.MySql
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            sb.Append("CONCAT(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(", '+', ");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d)));
 | 
			
		||||
 
 | 
			
		||||
@@ -30,15 +30,15 @@ namespace FreeSql.Odbc.Oracle
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" || '+' || ");
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
@@ -49,16 +49,16 @@ namespace FreeSql.Odbc.Oracle
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                if (_table.Primarys[0].Attribute.DbType.Contains("NVARCHAR2"))
 | 
			
		||||
                if (primarys[0].Attribute.DbType.Contains("NVARCHAR2"))
 | 
			
		||||
                    sb.Append("N");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            sb.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d)));
 | 
			
		||||
 
 | 
			
		||||
@@ -71,16 +71,16 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                if (string.IsNullOrEmpty(InternalTableAlias) == false) caseWhen.Append(InternalTableAlias).Append(".");
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" || '+' || ");
 | 
			
		||||
                if (string.IsNullOrEmpty(InternalTableAlias) == false) caseWhen.Append(InternalTableAlias).Append(".");
 | 
			
		||||
@@ -92,14 +92,14 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            sb.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" || '+' || ");
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d))).Append("::text");
 | 
			
		||||
 
 | 
			
		||||
@@ -68,15 +68,15 @@ namespace FreeSql.Odbc.SqlServer
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                var pk = _table.Primarys.First();
 | 
			
		||||
                var pk = primarys.First();
 | 
			
		||||
                caseWhen.Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            caseWhen.Append("(");
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) caseWhen.Append(" + '+' + ");
 | 
			
		||||
                caseWhen.Append("cast(").Append(_commonUtils.RereadColumn(pk, _commonUtils.QuoteSqlName(pk.Attribute.Name))).Append(" as varchar)");
 | 
			
		||||
@@ -87,13 +87,13 @@ namespace FreeSql.Odbc.SqlServer
 | 
			
		||||
 | 
			
		||||
        protected override void ToSqlWhen(StringBuilder sb, ColumnInfo[] primarys, object d)
 | 
			
		||||
        {
 | 
			
		||||
            if (_table.Primarys.Length == 1)
 | 
			
		||||
            if (primarys.Length == 1)
 | 
			
		||||
            {
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", _table.Primarys[0].GetDbValue(d)));
 | 
			
		||||
                sb.Append(_commonUtils.FormatSql("{0}", primarys[0].GetDbValue(d)));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            var pkidx = 0;
 | 
			
		||||
            foreach (var pk in _table.Primarys)
 | 
			
		||||
            foreach (var pk in primarys)
 | 
			
		||||
            {
 | 
			
		||||
                if (pkidx > 0) sb.Append(" + '+' + ");
 | 
			
		||||
                sb.Append("cast(").Append(_commonUtils.FormatSql("{0}", pk.GetDbValue(d))).Append(" as varchar)");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user