From 158829460f4bd4906a356a33293c28138d02c124 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 12 May 2017 21:11:29 +0800 Subject: [PATCH] - --- .../DMLBuilder/DeleteBuilder.cs | 8 ++- .../DeleteProvider/DeleteableProvider.cs | 53 ++++++++++++++----- SqlSugar/Interface/IDeleteable.cs | 6 +-- SqlSugar/SqlSugarClient.cs | 17 +++++- 4 files changed, 66 insertions(+), 18 deletions(-) diff --git a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs index 43a83e242..eca2cacbf 100644 --- a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs +++ b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/DeleteBuilder.cs @@ -29,7 +29,13 @@ namespace SqlSugar { get { - return " DELETE FROM {0}{1}"; + return "DELETE FROM {0}{1}"; + } + } + + public string WhereInTemplate { + get { + return "{0} IN ({1})"; } } public virtual string GetTableNameString diff --git a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 2a7ee6a0c..258382b5a 100644 --- a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -13,10 +13,11 @@ namespace SqlSugar public IDb Db { get { return Context.Database; } } public ISqlBuilder SqlBuilder { get; set; } public DeleteBuilder DeleteBuilder { get; set; } - public int ExecuteCommand() { - throw new NotImplementedException(); + string sql = DeleteBuilder.ToSqlString(); + var paramters = DeleteBuilder.Parameters.ToArray(); + return Db.GetInt(sql, paramters); } public IDeleteable Where(List deleteObjs) @@ -26,37 +27,65 @@ namespace SqlSugar public IDeleteable Where(Expression> expression) { - throw new NotImplementedException(); + var expResult=DeleteBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); + DeleteBuilder.WhereInfos.Add(expResult.GetResultString()); + return this; } public IDeleteable Where(T deleteObj) { - throw new NotImplementedException(); + string tableName = this.Context.GetTableName(); + + return this; } - public IDeleteable Where(string whereString, object whereObj) + public IDeleteable Where(string whereString, object whereObj=null) { - throw new NotImplementedException(); + DeleteBuilder.WhereInfos.Add(whereString); + if (whereObj != null) + { + DeleteBuilder.Parameters.AddRange(Context.Database.GetParameters(whereObj)); + } + return this; } - public IDeleteable Where(PkType[] primaryKeyValues) + public IDeleteable In(PkType[] primaryKeyValues) { - throw new NotImplementedException(); + if (primaryKeyValues == null || primaryKeyValues.Count() == 0) { + Where("1=2 "); + return this; + } + string tableName = this.Context.GetTableName(); + string primaryField = null; + if (this.Context.IsSystemTablesConfig) + { + primaryField = this.Db.DbMaintenance.GetPrimaries(tableName).FirstOrDefault(); + Check.ArgumentNullException(primaryField, "Table " + tableName + " with no primarykey"); + Where(string.Format(DeleteBuilder.WhereInTemplate, primaryField, primaryKeyValues.ToJoinSqlInVals())); + } + else { + + } + return this; } - public IDeleteable Where(PkType primaryKeyValue) + public IDeleteable In(PkType primaryKeyValue) { - throw new NotImplementedException(); + In(new PkType[] { primaryKeyValue }); + return this; } public IDeleteable With(string lockString) { - throw new NotImplementedException(); + DeleteBuilder.TableWithString = lockString; + return this; } public KeyValuePair> ToSql() { - throw new NotImplementedException(); + string sql = DeleteBuilder.ToSqlString(); + var paramters = DeleteBuilder.Parameters.ToList(); + return new KeyValuePair>(sql,paramters); } } } diff --git a/SqlSugar/Interface/IDeleteable.cs b/SqlSugar/Interface/IDeleteable.cs index de61597d0..675a4bb82 100644 --- a/SqlSugar/Interface/IDeleteable.cs +++ b/SqlSugar/Interface/IDeleteable.cs @@ -14,9 +14,9 @@ namespace SqlSugar 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); + IDeleteable In(PkType primaryKeyValue); + IDeleteable In(PkType [] primaryKeyValues); + IDeleteable Where(string whereString,object whereObj=null); KeyValuePair> ToSql(); } } diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index 1e37d09be..a21e41bd5 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -22,7 +22,7 @@ namespace SqlSugar { return this.CurrentConnectionConfig is SystemTablesConfig; } - } + } #endregion #region constructor @@ -255,7 +255,7 @@ namespace SqlSugar } public virtual IInsertable Insertable(T insertObj) where T : class, new() { - return this.Insertable(new T[] { insertObj}); + return this.Insertable(new T[] { insertObj }); } #endregion @@ -326,5 +326,18 @@ namespace SqlSugar } } #endregion + + #region Internal Methods + internal string GetTableName() + { + var typeName = typeof(T).Name; + if (this.MappingTables == null || this.MappingTables.Count == 0) return typeName; + else + { + var mappingInfo = this.MappingTables.SingleOrDefault(it => it.EntityName == typeName); + return mappingInfo.DbTableName; + } + } + #endregion } }