From e3c0f615f92682b0bbae10b2ae7d06717da6c89c Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Fri, 19 Apr 2019 13:50:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20SqlServer=20=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E5=8D=95=E5=85=83=20bug=20#23=20=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E8=AE=BE=E7=BD=AE=20SqlCommand.Connection=20?= =?UTF-8?q?+=20Transaction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/Extensions/EntityUtilExtensions.cs | 15 ++++++++++++--- FreeSql/FreeSql.csproj | 2 +- .../CommonProvider/AdoProvider/AdoProvider.cs | 2 ++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/FreeSql/Extensions/EntityUtilExtensions.cs b/FreeSql/Extensions/EntityUtilExtensions.cs index 1ae14635..f19461ca 100644 --- a/FreeSql/Extensions/EntityUtilExtensions.cs +++ b/FreeSql/Extensions/EntityUtilExtensions.cs @@ -43,9 +43,7 @@ namespace FreeSql.Extensions.EntityUtil { for (var a = 0; a < pks.Length; a++) { var isguid = pks[a].CsType.NullableTypeOrThis() == typeof(Guid); Expression expthen = null; - if (isguid == false) - expthen = Expression.Assign(var3IsNull, Expression.Constant(true)); - else { + if (isguid) { expthen = Expression.Block( new Expression[]{ Expression.Assign(Expression.MakeMemberAccess(var1Parm, _table.Properties[pks[a].CsName]), Expression.Call(MethodFreeUtilNewMongodbId)), @@ -55,6 +53,17 @@ namespace FreeSql.Extensions.EntityUtil { ) }.Where(c => c != null).ToArray() ); + } else if (pks.Length > 1 && pks[a].Attribute.IsIdentity) { + expthen = Expression.Block( + new Expression[]{ + a > 0 ? Expression.Call(var2Sb, MethodStringBuilderAppend, Expression.Constant(splitString)) : null, + Expression.Call(var2Sb, MethodStringBuilderAppend, + Expression.Convert(Expression.MakeMemberAccess(var1Parm, _table.Properties[pks[a].CsName]), typeof(object)) + ) + }.Where(c => c != null).ToArray() + ); + } else { + expthen = Expression.Assign(var3IsNull, Expression.Constant(true)); } if (pks[a].Attribute.IsIdentity || isguid || pks[a].CsType == typeof(string) || pks[a].CsType.IsNullableType()) { exps.Add( diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index efc5fb9a..25b00489 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.5.1.3 + 0.5.2 true YeXiangQin FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite. diff --git a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs index 556e02aa..4567ea98 100644 --- a/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs +++ b/FreeSql/Internal/CommonProvider/AdoProvider/AdoProvider.cs @@ -323,6 +323,8 @@ namespace FreeSql.Internal.CommonProvider { isclose = true; } cmd.Connection = connection; + if (transaction.Connection == connection) + cmd.Transaction = transaction; } if (IsTracePerformance) dt = DateTime.Now;