mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-16 04:59:34 +08:00
Merge branch 'master' of gitee.com:dotnetchina/SqlSugar
This commit is contained in:
commit
3722f2ef8d
@ -13,6 +13,7 @@ namespace SqlSugar
|
|||||||
RepositoryType CopyNew<RepositoryType>() where RepositoryType : ISugarRepository;
|
RepositoryType CopyNew<RepositoryType>() where RepositoryType : ISugarRepository;
|
||||||
SimpleClient<ChangeType> Change<ChangeType>() where ChangeType : class, new();
|
SimpleClient<ChangeType> Change<ChangeType>() where ChangeType : class, new();
|
||||||
RepositoryType ChangeRepository<RepositoryType>() where RepositoryType : ISugarRepository ;
|
RepositoryType ChangeRepository<RepositoryType>() where RepositoryType : ISugarRepository ;
|
||||||
|
RepositoryType ChangeRepository<RepositoryType>(IServiceProvider serviceProvider) where RepositoryType : ISugarRepository;
|
||||||
IDeleteable<T> AsDeleteable();
|
IDeleteable<T> AsDeleteable();
|
||||||
IInsertable<T> AsInsertable(List<T> insertObjs);
|
IInsertable<T> AsInsertable(List<T> insertObjs);
|
||||||
IInsertable<T> AsInsertable(T insertObj);
|
IInsertable<T> AsInsertable(T insertObj);
|
||||||
|
@ -79,11 +79,11 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public RepositoryType CopyNew<RepositoryType>(IServiceProvider serviceProvider) where RepositoryType : ISugarRepository
|
public RepositoryType CopyNew<RepositoryType>(IServiceProvider serviceProvider) where RepositoryType : ISugarRepository
|
||||||
{
|
{
|
||||||
var instance = handleDependencies(typeof(RepositoryType), serviceProvider);
|
var instance = handleDependencies(typeof(RepositoryType), serviceProvider,true);
|
||||||
return (RepositoryType)instance;
|
return (RepositoryType)instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
private object handleDependencies(Type type, IServiceProvider serviceProvider)
|
private object handleDependencies(Type type, IServiceProvider serviceProvider,bool needNewCopy = false)
|
||||||
{
|
{
|
||||||
ConstructorInfo constructorInfo = null;
|
ConstructorInfo constructorInfo = null;
|
||||||
var newInstanceType = type;
|
var newInstanceType = type;
|
||||||
@ -103,8 +103,7 @@ namespace SqlSugar
|
|||||||
object dependencyInstance = serviceProvider.GetService(type);
|
object dependencyInstance = serviceProvider.GetService(type);
|
||||||
if (dependencyInstance is ISugarRepository sugarRepository)
|
if (dependencyInstance is ISugarRepository sugarRepository)
|
||||||
{
|
{
|
||||||
sugarRepository.Context = sugarRepository.Context.CopyNew();
|
return setContext(sugarRepository, needNewCopy);
|
||||||
return sugarRepository;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -130,7 +129,28 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
private ISugarRepository setContext(ISugarRepository sugarRepository,bool needNewCopy)
|
||||||
|
{
|
||||||
|
if (sugarRepository.Context != null)
|
||||||
|
{
|
||||||
|
if (needNewCopy)
|
||||||
|
{
|
||||||
|
sugarRepository.Context = sugarRepository.Context.CopyNew();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (needNewCopy)
|
||||||
|
{
|
||||||
|
sugarRepository.Context = this.Context.CopyNew();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sugarRepository.Context = this.Context;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sugarRepository;
|
||||||
|
}
|
||||||
private bool IsAssignableToBaseRepository(Type type)
|
private bool IsAssignableToBaseRepository(Type type)
|
||||||
{
|
{
|
||||||
var baseInterfaces = type.GetInterfaces();
|
var baseInterfaces = type.GetInterfaces();
|
||||||
@ -169,6 +189,11 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public RepositoryType ChangeRepository<RepositoryType>(IServiceProvider serviceProvider) where RepositoryType : ISugarRepository
|
||||||
|
{
|
||||||
|
var instance = handleDependencies(typeof(RepositoryType), serviceProvider, false);
|
||||||
|
return (RepositoryType)instance;
|
||||||
|
}
|
||||||
public ISugarQueryable<T> AsQueryable()
|
public ISugarQueryable<T> AsQueryable()
|
||||||
{
|
{
|
||||||
return Context.Queryable<T>();
|
return Context.Queryable<T>();
|
||||||
|
Loading…
Reference in New Issue
Block a user