mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 优化 IAdo.Query 方法,当传入带主键特性的实体时,防止主键列为 null 时导致整行记录也为 null;
This commit is contained in:
parent
fff7925d22
commit
e132133e62
@ -110,6 +110,13 @@
|
||||
清空状态数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
|
||||
<summary>
|
||||
根据 lambda 条件删除数据
|
||||
</summary>
|
||||
<param name="predicate"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
||||
<summary>
|
||||
添加
|
||||
|
@ -2953,40 +2953,6 @@
|
||||
<param name="end"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSqlGlobalExpressionCall.Contains``2(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1}},``0,``1)">
|
||||
<summary>
|
||||
C#:从元组集合中查找 exp1, exp2 是否存在<para></para>
|
||||
SQL: <para></para>
|
||||
exp1 = that[0].Item1 and exp2 = that[0].Item2 OR <para></para>
|
||||
exp1 = that[1].Item1 and exp2 = that[1].Item2 OR <para></para>
|
||||
... <para></para>
|
||||
注意:当 that 为 null 或 empty 时,返回 1=0
|
||||
</summary>
|
||||
<typeparam name="T1"></typeparam>
|
||||
<typeparam name="T2"></typeparam>
|
||||
<param name="that"></param>
|
||||
<param name="exp1"></param>
|
||||
<param name="exp2"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSqlGlobalExpressionCall.Contains``3(System.Collections.Generic.IEnumerable{System.ValueTuple{``0,``1,``2}},``0,``1,``2)">
|
||||
<summary>
|
||||
C#:从元组集合中查找 exp1, exp2, exp2 是否存在<para></para>
|
||||
SQL: <para></para>
|
||||
exp1 = that[0].Item1 and exp2 = that[0].Item2 and exp3 = that[0].Item3 OR <para></para>
|
||||
exp1 = that[1].Item1 and exp2 = that[1].Item2 and exp3 = that[1].Item3 OR <para></para>
|
||||
... <para></para>
|
||||
注意:当 that 为 null 或 empty 时,返回 1=0
|
||||
</summary>
|
||||
<typeparam name="T1"></typeparam>
|
||||
<typeparam name="T2"></typeparam>
|
||||
<typeparam name="T3"></typeparam>
|
||||
<param name="that"></param>
|
||||
<param name="exp1"></param>
|
||||
<param name="exp2"></param>
|
||||
<param name="exp3"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:FreeSqlGlobalExtensions.Distance(System.Drawing.Point,System.Drawing.Point)">
|
||||
<summary>
|
||||
测量两个经纬度的距离,返回单位:米
|
||||
@ -3251,3 +3217,49 @@
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
Œå®Œæˆ<EFBFBD>(å<EFBFBD>¯èƒ½ï¼‰è¢«å…¶ä»–线程事务自动æ<EFBFBD><EFBFBD>交
|
||||
</summary>
|
||||
<param name="handler">事务体 () => {}</param>
|
||||
</member>
|
||||
<member name="M:IFreeSql.Transaction(System.TimeSpan,System.Action)">
|
||||
<summary>
|
||||
å¼€å<E282AC>¯äº‹åŠ¡ï¼ˆä¸<C3A4>支æŒ<C3A6>异æ¥ï¼‰
|
||||
</summary>
|
||||
<param name="timeout">超时,未执行完æˆ<EFBFBD>(å<EFBFBD>¯èƒ½ï¼‰è¢«å…¶ä»–线程事务自动æ<EFBFBD><EFBFBD>交</param>
|
||||
<param name="handler">事务体 () => {}</param>
|
||||
</member>
|
||||
<member name="M:IFreeSql.Transaction(System.Data.IsolationLevel,System.TimeSpan,System.Action)">
|
||||
<summary>
|
||||
å¼€å<E282AC>¯äº‹åŠ¡ï¼ˆä¸<C3A4>支æŒ<C3A6>异æ¥ï¼‰
|
||||
</summary>
|
||||
<param name="isolationLevel"></param>
|
||||
<param name="handler">事务体 () => {}</param>
|
||||
<param name="timeout">超时,未执行完æˆ<EFBFBD>(å<EFBFBD>¯èƒ½ï¼‰è¢«å…¶ä»–线程事务自动æ<EFBFBD><EFBFBD>交</param>
|
||||
</member>
|
||||
<member name="P:IFreeSql.Ado">
|
||||
<summary>
|
||||
æ•°æ<C2B0>®åº“访问对象
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IFreeSql.Aop">
|
||||
<summary>
|
||||
所有拦截方法都在这里
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IFreeSql.CodeFirst">
|
||||
<summary>
|
||||
CodeFirst 模å¼<C3A5>å¼€å<E282AC>‘相关方法
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IFreeSql.DbFirst">
|
||||
<summary>
|
||||
DbFirst 模å¼<C3A5>å¼€å<E282AC>‘相关方法
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:IFreeSql.GlobalFilter">
|
||||
<summary>
|
||||
全局过滤设置,å<C592>¯é»˜è®¤é™„åŠ ä¸º Select/Update/Delete æ<>¡ä»¶
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
@ -105,7 +105,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (indexes == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -148,7 +148,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -165,7 +165,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -216,7 +216,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -233,7 +233,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -250,7 +250,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -307,7 +307,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -324,7 +324,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -341,7 +341,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -358,7 +358,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 3:
|
||||
if (indexes4 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -421,7 +421,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -438,7 +438,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -455,7 +455,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -472,7 +472,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 3:
|
||||
if (indexes4 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -489,7 +489,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 4:
|
||||
if (indexes5 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
{
|
||||
if (indexes == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("query");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -75,7 +75,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -92,7 +92,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -144,7 +144,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -161,7 +161,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -178,7 +178,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -236,7 +236,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -253,7 +253,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -270,7 +270,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -287,7 +287,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 3:
|
||||
if (indexes4 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -351,7 +351,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 0:
|
||||
if (indexes1 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -368,7 +368,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 1:
|
||||
if (indexes2 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -385,7 +385,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 2:
|
||||
if (indexes3 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -402,7 +402,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 3:
|
||||
if (indexes4 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
@ -419,7 +419,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
case 4:
|
||||
if (indexes5 == null)
|
||||
{
|
||||
var sbflag = new StringBuilder().Append("QueryAsync");
|
||||
var sbflag = new StringBuilder().Append("adoQuery");
|
||||
var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
for (var a = 0; a < dr.FieldCount; a++)
|
||||
{
|
||||
|
@ -1495,7 +1495,8 @@ namespace FreeSql.Internal
|
||||
|
||||
//判断主键为空,则整个对象不读取
|
||||
//blockExp.Add(Expression.Assign(readpkvalExp, Expression.Call(rowExp, MethodDataReaderGetValue, dataIndexExp)));
|
||||
if (trycol?.Attribute.IsPrimary == true)
|
||||
if (flagStr.StartsWith("adoQuery") == false && //Ado.Query 的时候不作此判断
|
||||
trycol?.Attribute.IsPrimary == true) //若主键值为 null,则整行读取出来的对象为 null
|
||||
{
|
||||
ispkExp.Add(
|
||||
Expression.IfThen(
|
||||
|
Loading…
x
Reference in New Issue
Block a user