Add SimpleClient.ChangeRepository

This commit is contained in:
SUNKAIXUAN 2021-04-06 21:21:46 +08:00
parent bb3a254bde
commit 9dfb3f2aba
3 changed files with 32 additions and 7 deletions

View File

@ -22,8 +22,10 @@ namespace OrmTest
}
public class OrderDal:Repository<Order>
{
public void MyTest() {
public void MyTest()
{
base.CommQuery("1=1");
base.ChangeRepository<Repository<OrderItem>>().CommQuery("1=1");
}
}
public class Repository<T> : SimpleClient<T> where T : class, new()
@ -32,13 +34,18 @@ namespace OrmTest
{
if (context == null)
{
base.Context = new SqlSugarClient(new ConnectionConfig()
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = SqlSugar.DbType.SqlServer,
InitKeyType = InitKeyType.Attribute,
IsAutoCloseConnection = true,
ConnectionString = Config.ConnectionString
});
base.Context = db;
db.Aop.OnLogExecuting = (s, p) =>
{
Console.WriteLine(s);
};
}
}
@ -46,10 +53,10 @@ namespace OrmTest
/// 扩展方法,自带方法不能满足的时候可以添加新方法
/// </summary>
/// <returns></returns>
public List<T> CommQuery(string json)
public List<T> CommQuery(string sql)
{
//base.Context.Queryable<T>().ToList();可以拿到SqlSugarClient 做复杂操作
return null;
return base.Context.Queryable<T>().Where(sql).ToList();
}
}

View File

@ -8,6 +8,7 @@ namespace SqlSugar
public interface ISimpleClient<T> where T : class, new()
{
SimpleClient<ChangeType> Change<ChangeType>() where ChangeType : class, new();
RepositoryType ChangeRepository<RepositoryType>() where RepositoryType : ISugarRepository ;
IDeleteable<T> AsDeleteable();
IInsertable<T> AsInsertable(List<T> insertObjs);
IInsertable<T> AsInsertable(T insertObj);

View File

@ -2,16 +2,17 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public partial class SimpleClient<T> : ISimpleClient<T> where T : class, new()
public partial class SimpleClient<T> : ISugarRepository,ISimpleClient<T> where T : class, new()
{
#region Interface
protected ISqlSugarClient Context { get; set; }
public ISqlSugarClient Context { get; set; }
public ITenant AsTenant()
{
@ -34,6 +35,17 @@ namespace SqlSugar
{
return this.Context.GetSimpleClient<ChangeType>();
}
public RepositoryType ChangeRepository<RepositoryType>() where RepositoryType : ISugarRepository
{
Type type = typeof(RepositoryType);
object o = Activator.CreateInstance(type,new string[]{ null});
var result= (RepositoryType)o;
if (result.Context == null)
{
result.Context = this.Context;
}
return result;
}
public ISugarQueryable<T> AsQueryable()
{
return Context.Queryable<T>();
@ -291,4 +303,9 @@ namespace SqlSugar
[Obsolete("Use AsSugarClient()")]
public ISqlSugarClient FullClient { get { return this.Context; } }
}
public interface ISugarRepository
{
ISqlSugarClient Context { get; set; }
}
}