- 优化 Guid GetDefaultValue 可能导致的错误;

This commit is contained in:
28810 2020-05-07 13:45:25 +08:00
parent 5edf8b3dcf
commit ebe1b7a34f
7 changed files with 37 additions and 17 deletions

View File

@ -125,6 +125,13 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </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)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加
@ -479,5 +486,14 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@ -128,10 +128,14 @@ public static partial class FreeSqlGlobalExtensions
{ {
if (that == null) return null; if (that == null) return null;
if (that == typeof(string)) return default(string); if (that == typeof(string)) return default(string);
if (that == typeof(Guid)) return default(Guid);
if (that.IsArray) return Array.CreateInstance(that, 0); if (that.IsArray) return Array.CreateInstance(that, 0);
var ctorParms = that.InternalGetTypeConstructor0OrFirst(false)?.GetParameters(); var ctorParms = that.InternalGetTypeConstructor0OrFirst(false)?.GetParameters();
if (ctorParms == null || ctorParms.Any() == false) return Activator.CreateInstance(that, true); if (ctorParms == null || ctorParms.Any() == false) return Activator.CreateInstance(that, true);
return Activator.CreateInstance(that, ctorParms.Select(a => a.ParameterType.IsInterface || a.ParameterType.IsAbstract || a.ParameterType == typeof(string) ? null : Activator.CreateInstance(a.ParameterType, null)).ToArray()); return Activator.CreateInstance(that, ctorParms
.Select(a => a.ParameterType.IsInterface || a.ParameterType.IsAbstract || a.ParameterType == typeof(string) || a.ParameterType.IsArray ?
null :
Activator.CreateInstance(a.ParameterType, null)).ToArray());
} }
internal static NewExpression InternalNewExpression(this Type that) internal static NewExpression InternalNewExpression(this Type that)
{ {

View File

@ -824,7 +824,7 @@
</member> </member>
<member name="M:FreeSql.IDelete`1.WhereDynamic(System.Object,System.Boolean)"> <member name="M:FreeSql.IDelete`1.WhereDynamic(System.Object,System.Boolean)">
<summary> <summary>
传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<param name="not">是否标识为NOT</param> <param name="not">是否标识为NOT</param>
@ -1662,7 +1662,7 @@
</member> </member>
<member name="M:FreeSql.ISelect`1.WhereDynamic(System.Object,System.Boolean)"> <member name="M:FreeSql.ISelect`1.WhereDynamic(System.Object,System.Boolean)">
<summary> <summary>
传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<param name="not">是否标识为NOT</param> <param name="not">是否标识为NOT</param>
@ -2077,7 +2077,7 @@
</member> </member>
<member name="M:FreeSql.IUpdate`1.WhereDynamic(System.Object,System.Boolean)"> <member name="M:FreeSql.IUpdate`1.WhereDynamic(System.Object,System.Boolean)">
<summary> <summary>
传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
<param name="not">是否标识为NOT</param> <param name="not">是否标识为NOT</param>
@ -3456,7 +3456,7 @@
</member> </member>
<member name="M:IFreeSql.Update``1(System.Object)"> <member name="M:IFreeSql.Update``1(System.Object)">
<summary> <summary>
修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -3471,7 +3471,7 @@
</member> </member>
<member name="M:IFreeSql.Select``1(System.Object)"> <member name="M:IFreeSql.Select``1(System.Object)">
<summary> <summary>
查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -3486,7 +3486,7 @@
</member> </member>
<member name="M:IFreeSql.Delete``1(System.Object)"> <member name="M:IFreeSql.Delete``1(System.Object)">
<summary> <summary>
删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -3619,7 +3619,7 @@
</member> </member>
<member name="M:IFreeSql.Update``1(System.Object)"> <member name="M:IFreeSql.Update``1(System.Object)">
<summary> <summary>
修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -3634,7 +3634,7 @@
</member> </member>
<member name="M:IFreeSql.Select``1(System.Object)"> <member name="M:IFreeSql.Select``1(System.Object)">
<summary> <summary>
查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -3649,7 +3649,7 @@
</member> </member>
<member name="M:IFreeSql.Delete``1(System.Object)"> <member name="M:IFreeSql.Delete``1(System.Object)">
<summary> <summary>
删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
</summary> </summary>
<typeparam name="T1"></typeparam> <typeparam name="T1"></typeparam>
<param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>

View File

@ -49,7 +49,7 @@ namespace FreeSql
/// <returns></returns> /// <returns></returns>
IDelete<T1> Where(IEnumerable<T1> items); IDelete<T1> Where(IEnumerable<T1> items);
/// <summary> /// <summary>
/// 传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
/// <param name="not">是否标识为NOT</param> /// <param name="not">是否标识为NOT</param>

View File

@ -292,7 +292,7 @@ namespace FreeSql
/// <returns></returns> /// <returns></returns>
ISelect<T1> Where<T2, T3, T4, T5>(Expression<Func<T1, T2, T3, T4, T5, bool>> exp) where T2 : class where T3 : class where T4 : class where T5 : class; ISelect<T1> Where<T2, T3, T4, T5>(Expression<Func<T1, T2, T3, T4, T5, bool>> exp) where T2 : class where T3 : class where T4 : class where T5 : class;
/// <summary> /// <summary>
/// 传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
/// <param name="not">是否标识为NOT</param> /// <param name="not">是否标识为NOT</param>

View File

@ -147,7 +147,7 @@ namespace FreeSql
/// <returns></returns> /// <returns></returns>
IUpdate<T1> Where(IEnumerable<T1> items); IUpdate<T1> Where(IEnumerable<T1> items);
/// <summary> /// <summary>
/// 传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
/// <param name="not">是否标识为NOT</param> /// <param name="not">是否标识为NOT</param>

View File

@ -51,7 +51,7 @@ public interface IFreeSql : IDisposable
/// <returns></returns> /// <returns></returns>
IUpdate<T1> Update<T1>() where T1 : class; IUpdate<T1> Update<T1>() where T1 : class;
/// <summary> /// <summary>
/// 修改数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <typeparam name="T1"></typeparam> /// <typeparam name="T1"></typeparam>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -65,7 +65,7 @@ public interface IFreeSql : IDisposable
/// <returns></returns> /// <returns></returns>
ISelect<T1> Select<T1>() where T1 : class; ISelect<T1> Select<T1>() where T1 : class;
/// <summary> /// <summary>
/// 查询数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <typeparam name="T1"></typeparam> /// <typeparam name="T1"></typeparam>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>
@ -79,7 +79,7 @@ public interface IFreeSql : IDisposable
/// <returns></returns> /// <returns></returns>
IDelete<T1> Delete<T1>() where T1 : class; IDelete<T1> Delete<T1>() where T1 : class;
/// <summary> /// <summary>
/// 删除数据,传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}
/// </summary> /// </summary>
/// <typeparam name="T1"></typeparam> /// <typeparam name="T1"></typeparam>
/// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param> /// <param name="dywhere">主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合</param>