diff --git a/OrmTest/Demo/Delete.cs b/OrmTest/Demo/Delete.cs index ba4cd58f9..97408d966 100644 --- a/OrmTest/Demo/Delete.cs +++ b/OrmTest/Demo/Delete.cs @@ -1,4 +1,6 @@ -using System; +using OrmTest.Models; +using SqlSugar; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,5 +10,36 @@ namespace OrmTest.Demo { public class Delete { + public static void Init() + { + var db = GetInstance(); + //by entity + var t1 = db.Deleteable().Where(new Student() { Id = 1 }).ExecuteCommand(); + + //use lock + var t2 = db.Deleteable().With(SqlWith.RowLock).ExecuteCommand(); + + + //by primary key + var t3 = db.Deleteable().In(1).ExecuteCommand(); + + //by primary key array + var t4 = db.Deleteable().In(new int[] { 1, 2 }).ExecuteCommand(); + + //by expression + var t5 = db.Deleteable().Where(it => it.Id == 1).ExecuteCommand(); + } + + public static SqlSugarClient GetInstance() + { + SqlSugarClient db = new SqlSugarClient(new SystemTablesConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true }); + db.Ado.IsEnableLogEvent = true; + db.Ado.LogEventStarting = (sql, pars) => + { + Console.WriteLine(sql + "\r\n" + db.RewritableMethods.SerializeObject(pars)); + Console.WriteLine(); + }; + return db; + } } } diff --git a/OrmTest/Program.cs b/OrmTest/Program.cs index 2892d83ec..dfe4ee982 100644 --- a/OrmTest/Program.cs +++ b/OrmTest/Program.cs @@ -36,6 +36,7 @@ namespace OrmTest /***Demo***/ OrmTest.Demo.Query.Init(); OrmTest.Demo.Insert.Init(); + OrmTest.Demo.Delete.Init(); } } } diff --git a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs index eeee576ff..5fe03a130 100644 --- a/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/Core/SqlBuilder/DMLBuilder/InsertBuilder.cs @@ -18,11 +18,11 @@ namespace SqlSugar public ISqlBuilder Builder { get; set; } public StringBuilder sql { get; set; } public List Parameters { get; set; } - public string TableName { get; set; } public string TableWithString { get; set; } public List DbColumnInfoList { get; set; } public bool IsInsertNull { get; set; } public bool IsReturnIdentity { get; set; } + public EntityInfo EntityInfo { get; set; } public virtual string SqlTemplate { @@ -74,7 +74,7 @@ namespace SqlSugar { get { - var result = Builder.GetTranslationTableName(TableName); + var result = Builder.GetTranslationTableName(EntityInfo.EntityName); result += PubConst.Space; if (this.TableWithString.IsValuable()) { @@ -83,6 +83,8 @@ namespace SqlSugar return result; } } + + public virtual ExpressionResult GetExpressionValue(Expression expression, ResolveExpressType resolveType) { ILambdaExpressions resolveExpress = this.LambdaExpressions; diff --git a/SqlSugar/Abstract/Core/SqlBuilder/SqlBuilderProvider.cs b/SqlSugar/Abstract/Core/SqlBuilder/SqlBuilderProvider.cs index c5fa21244..2fe6a64e3 100644 --- a/SqlSugar/Abstract/Core/SqlBuilder/SqlBuilderProvider.cs +++ b/SqlSugar/Abstract/Core/SqlBuilder/SqlBuilderProvider.cs @@ -16,8 +16,9 @@ namespace SqlSugar public CommandType CommandType { get; set; } public virtual string SqlParameterKeyWord { get { return "@"; } } public abstract string GetTranslationTableName(string name); - public abstract string GetTranslationColumnName(string name); - + public abstract string GetTranslationColumnName(string entityName, string propertyName); + public abstract string GetTranslationColumnName(string propertyName); + public string AppendWhereOrAnd(bool isWhere, string sqlString) { return isWhere ? (" WHERE " + sqlString ):( " AND " + sqlString); @@ -27,6 +28,7 @@ namespace SqlSugar return " HAVING " + sqlString; } + public DeleteBuilder DeleteBuilder { get; set; diff --git a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 13e4714d2..a29992648 100644 --- a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -124,15 +124,6 @@ namespace SqlSugar } internal void Init() { - this.InsertBuilder.TableName = EntityInfo.EntityName; - if (IsMappingTable) - { - var mappingInfo = this.Context.MappingTables.SingleOrDefault(it => it.EntityName == EntityInfo.EntityName); - if (mappingInfo != null) - { - this.InsertBuilder.TableName = mappingInfo.DbTableName; - } - } Check.Exception(InsertObjs == null || InsertObjs.Count() == 0, "InsertObjs is null"); int i = 0; foreach (var item in InsertObjs) diff --git a/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs b/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs index 66154481a..c45898beb 100644 --- a/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs +++ b/SqlSugar/Interface/ISqlBuilder/ISqlBuilder.cs @@ -19,7 +19,9 @@ namespace SqlSugar UpdateBuilder UpdateBuilder { get; set; } string SqlParameterKeyWord { get; } + string GetTranslationTableName(string name); - string GetTranslationColumnName(string name); + string GetTranslationColumnName(string entityName, string propertyName); + string GetTranslationColumnName(string propertyName); } } diff --git a/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerBuilder.cs b/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerBuilder.cs index 459da0624..407945bd1 100644 --- a/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerBuilder.cs +++ b/SqlSugar/Realization/SqlServer/Core/SqlBuilder/SqlServerBuilder.cs @@ -10,21 +10,29 @@ namespace SqlSugar { public override string GetTranslationTableName(string name) { - Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name")); + Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name")); var context = this.Context; var mappingInfo = context .MappingTables .FirstOrDefault(it => it.EntityName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); return "[" + (mappingInfo == null ? name : mappingInfo.DbTableName) + "]"; } - public override string GetTranslationColumnName(string name) + public override string GetTranslationColumnName(string entityName, string propertyName) { - Check.ArgumentNullException(name, string.Format(ErrorMessage.ObjNotExist, "Table Name Or Column Name")); + Check.ArgumentNullException(entityName, string.Format(ErrorMessage.ObjNotExist, "Table Name")); + Check.ArgumentNullException(propertyName, string.Format(ErrorMessage.ObjNotExist, "Column Name")); var context = this.Context; var mappingInfo = context .MappingColumns - .FirstOrDefault(it => it.EntityPropertyName.Equals(name, StringComparison.CurrentCultureIgnoreCase)); - return (mappingInfo == null ? "["+name+"]" : "["+mappingInfo.DbColumnName+"]"); + .FirstOrDefault(it => + it.EntityName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase)&& + it.EntityPropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase)); + return (mappingInfo == null ? "["+ propertyName + "]" : "["+mappingInfo.DbColumnName+"]"); + } + + public override string GetTranslationColumnName(string propertyName) + { + return "[" + propertyName + "]"; } } } diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index 1506b6f93..b44e30512 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -253,6 +253,7 @@ namespace SqlSugar sqlBuilder.InsertBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(base.CurrentConnectionConfig); sqlBuilder.Context = reval.SqlBuilder.InsertBuilder.Context = this; reval.Init(); + reval.InsertBuilder.EntityInfo = reval.EntityInfo; return reval; } public virtual IInsertable Insertable(List insertObjs) where T : class, new()