diff --git a/OrmTest/OrmTest.csproj b/OrmTest/OrmTest.csproj index 66bddc2af..e6cfed6d4 100644 --- a/OrmTest/OrmTest.csproj +++ b/OrmTest/OrmTest.csproj @@ -60,6 +60,7 @@ + diff --git a/OrmTest/UnitTest/Delete.cs b/OrmTest/UnitTest/Delete.cs new file mode 100644 index 000000000..0d6f0da90 --- /dev/null +++ b/OrmTest/UnitTest/Delete.cs @@ -0,0 +1,30 @@ +using OrmTest.UnitTest; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class Delete : ExpTestBase + { + private Delete() { } + public Delete(int eachCount) + { + this.Count = eachCount; + } + + public void Init() + { + + } + + public SqlSugarClient GetInstance() + { + SqlSugarClient db = new SqlSugarClient(new SystemTablesConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true }); + return db; + } + } +} diff --git a/SqlSugar/Abstract/UpdateProvider/DeleteableProvider.cs b/SqlSugar/Abstract/UpdateProvider/DeleteableProvider.cs new file mode 100644 index 000000000..b81600a6c --- /dev/null +++ b/SqlSugar/Abstract/UpdateProvider/DeleteableProvider.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class DeleteableProvider : IDeleteable where T : class, new() + { + public SqlSugarClient Context { get; set; } + public IDb Db { get { return Context.Database; } } + public ISqlBuilder SqlBuilder { get; set; } + public DeleteBuilder DeleteBuilder { get; set; } + + public int ExecuteCommand() + { + throw new NotImplementedException(); + } + + public IDeleteable TableName(string name) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(List deleteObjs) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(Expression> expression) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(T deleteObj) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(string whereString, object whereObj) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(PkType[] primaryKeyValues) + { + throw new NotImplementedException(); + } + + public IDeleteable Where(PkType primaryKeyValue) + { + throw new NotImplementedException(); + } + + public IDeleteable With(string lockString) + { + throw new NotImplementedException(); + } + } +} diff --git a/SqlSugar/InstanceFactory.cs b/SqlSugar/InstanceFactory.cs index 544ef5916..9e58ceea9 100644 --- a/SqlSugar/InstanceFactory.cs +++ b/SqlSugar/InstanceFactory.cs @@ -31,6 +31,12 @@ namespace SqlSugar InsertBuilder reval = CreateInstance(GetClassName(currentConnectionConfig.DbType, "InsertBuilder"), currentConnectionConfig.DbType); return reval; } + public static DeleteBuilder GetDeleteBuilder(IConnectionConfig currentConnectionConfig) + { + CheckConfig(currentConnectionConfig); + DeleteBuilder reval = CreateInstance(GetClassName(currentConnectionConfig.DbType, "DeleteBuilder"), currentConnectionConfig.DbType); + return reval; + } public static ILambdaExpressions GetLambdaExpressions(IConnectionConfig currentConnectionConfig) { diff --git a/SqlSugar/Interface/IDeleteable.cs b/SqlSugar/Interface/IDeleteable.cs index c1c537e3d..a78bd5961 100644 --- a/SqlSugar/Interface/IDeleteable.cs +++ b/SqlSugar/Interface/IDeleteable.cs @@ -10,13 +10,13 @@ namespace SqlSugar public interface IDeleteable { int ExecuteCommand(); - IInsertable TableName(string name); - IInsertable With(string lockString); - IInsertable Where(T deleteObj); - IInsertable Where(Expression> expression); - IInsertable Where(List deleteObjs); - IInsertable Where(PkType primaryKeyValue); - IInsertable Where(PkType [] primaryKeyValues); - IInsertable Where(string whereString,object whereObj); + IDeleteable TableName(string name); + IDeleteable With(string lockString); + IDeleteable Where(T deleteObj); + IDeleteable Where(Expression> expression); + IDeleteable Where(List deleteObjs); + IDeleteable Where(PkType primaryKeyValue); + IDeleteable Where(PkType [] primaryKeyValues); + IDeleteable Where(string whereString,object whereObj); } } diff --git a/SqlSugar/SqlSugar.csproj b/SqlSugar/SqlSugar.csproj index 11c7ca14a..415c20391 100644 --- a/SqlSugar/SqlSugar.csproj +++ b/SqlSugar/SqlSugar.csproj @@ -55,6 +55,7 @@ + @@ -161,7 +162,6 @@ - diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index d1b1ba0e6..b3cf5551f 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -259,6 +259,21 @@ namespace SqlSugar } #endregion + #region deleteable + public virtual IDeleteable Deleteable() where T : class, new() + { + var reval = new DeleteableProvider(); + var sqlBuilder = InstanceFactory.GetSqlbuilder(base.CurrentConnectionConfig); ; + reval.Context = this; + reval.SqlBuilder = sqlBuilder; + sqlBuilder.DeleteBuilder = reval.DeleteBuilder = InstanceFactory.GetDeleteBuilder(base.CurrentConnectionConfig); + sqlBuilder.InsertBuilder.Builder = sqlBuilder; + sqlBuilder.InsertBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig); + sqlBuilder.Context = reval.SqlBuilder.InsertBuilder.Context = this; + return reval; + } + #endregion + #region SqlQuery public virtual List SqlQuery(string sql, object whereObj = null) {