mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Add :
db.DeleteableByObject db.UpdateableByObject
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class DeleteMethodInfo
|
||||||
|
{
|
||||||
|
internal SqlSugarProvider Context { get; set; }
|
||||||
|
internal MethodInfo MethodInfo { get; set; }
|
||||||
|
internal object objectValue { get; set; }
|
||||||
|
|
||||||
|
public int ExecuteCommand()
|
||||||
|
{
|
||||||
|
if (Context == null) return 0;
|
||||||
|
var inertable=MethodInfo.Invoke(Context, new object[] { objectValue });
|
||||||
|
var result= inertable.GetType().GetMethod("ExecuteCommand").Invoke(inertable,new object[] { });
|
||||||
|
return (int)result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -767,6 +767,52 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Deleteable
|
#region Deleteable
|
||||||
|
public DeleteMethodInfo DeleteableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
if (singleEntityObjectOrListObject == null)
|
||||||
|
return new DeleteMethodInfo();
|
||||||
|
if (singleEntityObjectOrListObject.GetType().FullName.IsCollectionsList())
|
||||||
|
{
|
||||||
|
var list = ((IList)singleEntityObjectOrListObject);
|
||||||
|
if (list == null || list.Count == 0)
|
||||||
|
return new DeleteMethodInfo();
|
||||||
|
var type = list[0].GetType();
|
||||||
|
var newList = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(type));
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
newList.Add(item);
|
||||||
|
}
|
||||||
|
var methods = this.Context.GetType().GetMethods()
|
||||||
|
.Where(it => it.Name == "Deleteable")
|
||||||
|
.Where(it => it.GetGenericArguments().Any())
|
||||||
|
.Where(it => it.GetParameters().Any(z => z.ParameterType.Name.StartsWith("List")))
|
||||||
|
.Where(it => it.Name == "Deleteable").ToList();
|
||||||
|
var method = methods.Single().MakeGenericMethod(newList.GetType().GetGenericArguments().FirstOrDefault());
|
||||||
|
DeleteMethodInfo result = new DeleteMethodInfo()
|
||||||
|
{
|
||||||
|
Context = this.Context,
|
||||||
|
MethodInfo = method,
|
||||||
|
objectValue = newList
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var methods = this.Context.GetType().GetMethods()
|
||||||
|
.Where(it => it.Name == "Deleteable")
|
||||||
|
.Where(it => it.GetGenericArguments().Any())
|
||||||
|
.Where(it => it.GetParameters().Any(z => z.ParameterType.Name == "T"))
|
||||||
|
.Where(it => it.Name == "Deleteable").ToList();
|
||||||
|
var method = methods.Single().MakeGenericMethod(singleEntityObjectOrListObject.GetType());
|
||||||
|
DeleteMethodInfo result = new DeleteMethodInfo()
|
||||||
|
{
|
||||||
|
Context = this.Context,
|
||||||
|
MethodInfo = method,
|
||||||
|
objectValue = singleEntityObjectOrListObject
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
public virtual IDeleteable<T> Deleteable<T>() where T : class, new()
|
public virtual IDeleteable<T> Deleteable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
InitMappingInfo<T>();
|
InitMappingInfo<T>();
|
||||||
@@ -806,6 +852,52 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Updateable
|
#region Updateable
|
||||||
|
public UpdateMethodInfo UpdateableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
if (singleEntityObjectOrListObject == null)
|
||||||
|
return new UpdateMethodInfo();
|
||||||
|
if (singleEntityObjectOrListObject.GetType().FullName.IsCollectionsList())
|
||||||
|
{
|
||||||
|
var list = ((IList)singleEntityObjectOrListObject);
|
||||||
|
if (list == null || list.Count == 0)
|
||||||
|
return new UpdateMethodInfo();
|
||||||
|
var type = list[0].GetType();
|
||||||
|
var newList = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(type));
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
newList.Add(item);
|
||||||
|
}
|
||||||
|
var methods = this.Context.GetType().GetMethods()
|
||||||
|
.Where(it => it.Name == "Updateable")
|
||||||
|
.Where(it => it.GetGenericArguments().Any())
|
||||||
|
.Where(it => it.GetParameters().Any(z => z.ParameterType.Name.StartsWith("List")))
|
||||||
|
.Where(it => it.Name == "Updateable").ToList();
|
||||||
|
var method = methods.Single().MakeGenericMethod(newList.GetType().GetGenericArguments().First());
|
||||||
|
UpdateMethodInfo result = new UpdateMethodInfo()
|
||||||
|
{
|
||||||
|
Context = this.Context,
|
||||||
|
MethodInfo = method,
|
||||||
|
objectValue = newList
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var methods = this.Context.GetType().GetMethods()
|
||||||
|
.Where(it => it.Name == "Updateable")
|
||||||
|
.Where(it => it.GetGenericArguments().Any())
|
||||||
|
.Where(it => it.GetParameters().Any(z => z.ParameterType.Name == "T"))
|
||||||
|
.Where(it => it.Name == "Updateable").ToList();
|
||||||
|
var method = methods.Single().MakeGenericMethod(singleEntityObjectOrListObject.GetType());
|
||||||
|
UpdateMethodInfo result = new UpdateMethodInfo()
|
||||||
|
{
|
||||||
|
Context = this.Context,
|
||||||
|
MethodInfo = method,
|
||||||
|
objectValue = singleEntityObjectOrListObject
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
public virtual IUpdateable<T> Updateable<T>(T[] UpdateObjs) where T : class, new()
|
public virtual IUpdateable<T> Updateable<T>(T[] UpdateObjs) where T : class, new()
|
||||||
{
|
{
|
||||||
InitMappingInfo<T>();
|
InitMappingInfo<T>();
|
||||||
|
@@ -144,6 +144,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ScopedContext.Close();
|
ScopedContext.Close();
|
||||||
}
|
}
|
||||||
|
public DeleteMethodInfo DeleteableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
return ScopedContext.Deleteable<T>();
|
return ScopedContext.Deleteable<T>();
|
||||||
@@ -615,6 +619,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return ScopedContext.UnionAll(queryables);
|
return ScopedContext.UnionAll(queryables);
|
||||||
}
|
}
|
||||||
|
public UpdateMethodInfo UpdateableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
|
|
||||||
public IUpdateable<T> Updateable<T>() where T : class, new()
|
public IUpdateable<T> Updateable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
|
@@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class UpdateMethodInfo
|
||||||
|
{
|
||||||
|
internal SqlSugarProvider Context { get; set; }
|
||||||
|
internal MethodInfo MethodInfo { get; set; }
|
||||||
|
internal object objectValue { get; set; }
|
||||||
|
|
||||||
|
public int ExecuteCommand()
|
||||||
|
{
|
||||||
|
if (Context == null) return 0;
|
||||||
|
var inertable=MethodInfo.Invoke(Context, new object[] { objectValue });
|
||||||
|
var result= inertable.GetType().GetMethod("ExecuteCommand").Invoke(inertable,new object[] { });
|
||||||
|
return (int)result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -133,6 +133,8 @@
|
|||||||
<Compile Include="Abstract\SaveableProvider\StorageableDataTable.cs" />
|
<Compile Include="Abstract\SaveableProvider\StorageableDataTable.cs" />
|
||||||
<Compile Include="Abstract\SqlBuilderProvider\SqlBuilderProvider_Condition.cs" />
|
<Compile Include="Abstract\SqlBuilderProvider\SqlBuilderProvider_Condition.cs" />
|
||||||
<Compile Include="Abstract\SugarProvider\SqlSugarCoreProvider.cs" />
|
<Compile Include="Abstract\SugarProvider\SqlSugarCoreProvider.cs" />
|
||||||
|
<Compile Include="Abstract\DeleteProvider\DeleteMethodInfo.cs" />
|
||||||
|
<Compile Include="Abstract\UpdateProvider\UpdateMethodInfo.cs" />
|
||||||
<Compile Include="Abstract\UpdateProvider\UpdateableHelper.cs" />
|
<Compile Include="Abstract\UpdateProvider\UpdateableHelper.cs" />
|
||||||
<Compile Include="Abstract\UpdateProvider\SplitTableUpdateByObjectProvider.cs" />
|
<Compile Include="Abstract\UpdateProvider\SplitTableUpdateByObjectProvider.cs" />
|
||||||
<Compile Include="Entities\DbFastestProperties.cs" />
|
<Compile Include="Entities\DbFastestProperties.cs" />
|
||||||
|
@@ -665,6 +665,10 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Updateable
|
#region Updateable
|
||||||
|
public UpdateMethodInfo UpdateableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return this.Context.UpdateableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
public IUpdateable<T> Updateable<T>() where T : class, new()
|
public IUpdateable<T> Updateable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
return this.Context.Updateable<T>();
|
return this.Context.Updateable<T>();
|
||||||
@@ -713,6 +717,10 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Deleteable
|
#region Deleteable
|
||||||
|
public DeleteMethodInfo DeleteableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return this.Context.DeleteableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
return this.Context.Deleteable<T>();
|
return this.Context.Deleteable<T>();
|
||||||
|
@@ -120,6 +120,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return ScopedContext.CommitTranAsync();
|
return ScopedContext.CommitTranAsync();
|
||||||
}
|
}
|
||||||
|
public DeleteMethodInfo DeleteableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
public IDeleteable<T> Deleteable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
return ScopedContext.Deleteable<T>();
|
return ScopedContext.Deleteable<T>();
|
||||||
@@ -626,7 +630,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return ScopedContext.UnionAll(queryables);
|
return ScopedContext.UnionAll(queryables);
|
||||||
}
|
}
|
||||||
|
public UpdateMethodInfo UpdateableByObject(object singleEntityObjectOrListObject)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateableByObject(singleEntityObjectOrListObject);
|
||||||
|
}
|
||||||
public IUpdateable<T> Updateable<T>() where T : class, new()
|
public IUpdateable<T> Updateable<T>() where T : class, new()
|
||||||
{
|
{
|
||||||
return ScopedContext.Updateable<T>();
|
return ScopedContext.Updateable<T>();
|
||||||
|
Reference in New Issue
Block a user