mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-09 10:55:02 +08:00
Delete BUG with multiple primary keys
This commit is contained in:
@@ -56,6 +56,20 @@ namespace OrmTest
|
|||||||
base.Check(@"DELETE FROM [STudent] WHERE id=@id", new List<SugarParameter>() {
|
base.Check(@"DELETE FROM [STudent] WHERE id=@id", new List<SugarParameter>() {
|
||||||
new SugarParameter("@id",1)
|
new SugarParameter("@id",1)
|
||||||
}, t6.Key, t6.Value, "Delte t6 error");
|
}, t6.Key, t6.Value, "Delte t6 error");
|
||||||
|
|
||||||
|
var t7 = base.GetInstanceByAttribute().Deleteable<DeleteTestTable>().Where(new List<DeleteTestTable>() {
|
||||||
|
new DeleteTestTable() { Id=1, Id2="x" },
|
||||||
|
new DeleteTestTable() { Id=2, Id2="x1" }
|
||||||
|
}).ToSql();
|
||||||
|
base.Check("DELETE FROM [DeleteTestTable] WHERE (([Id]=N'1'AND [Id2]=N'x')OR ([Id]=N'2'AND [Id2]=N'x1')) ",null, t7.Key, null,
|
||||||
|
"Delte t7 error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class DeleteTestTable {
|
||||||
|
[SugarColumn(IsPrimaryKey =true)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
[SugarColumn(IsPrimaryKey = true)]
|
||||||
|
public string Id2 { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,5 +51,11 @@ namespace OrmTest.UnitTest
|
|||||||
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
|
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
|
||||||
return db;
|
return db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public SqlSugarClient GetInstanceByAttribute()
|
||||||
|
{
|
||||||
|
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType=InitKeyType.Attribute, ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
|
||||||
|
return db;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ namespace SqlSugar
|
|||||||
string tableName = this.Context.EntityMaintenance.GetTableName<T>();
|
string tableName = this.Context.EntityMaintenance.GetTableName<T>();
|
||||||
var primaryFields = this.GetPrimaryKeys();
|
var primaryFields = this.GetPrimaryKeys();
|
||||||
var isSinglePrimaryKey = primaryFields.Count == 1;
|
var isSinglePrimaryKey = primaryFields.Count == 1;
|
||||||
Check.ArgumentNullException(primaryFields, string.Format("Table {0} with no primarykey", tableName));
|
Check.Exception(primaryFields.IsNullOrEmpty(), string.Format("Table {0} with no primarykey", tableName));
|
||||||
if (isSinglePrimaryKey)
|
if (isSinglePrimaryKey)
|
||||||
{
|
{
|
||||||
List<object> primaryKeyValues = new List<object>();
|
List<object> primaryKeyValues = new List<object>();
|
||||||
@@ -106,7 +106,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
StringBuilder orString = new StringBuilder();
|
StringBuilder orString = new StringBuilder();
|
||||||
var isFirst = deleteObjs.IndexOf(deleteObj) == 0;
|
var isFirst = deleteObjs.IndexOf(deleteObj) == 0;
|
||||||
if (isFirst)
|
if (!isFirst)
|
||||||
{
|
{
|
||||||
orString.Append(DeleteBuilder.WhereInOrTemplate + UtilConstants.Space);
|
orString.Append(DeleteBuilder.WhereInOrTemplate + UtilConstants.Space);
|
||||||
}
|
}
|
||||||
@@ -114,7 +114,7 @@ namespace SqlSugar
|
|||||||
StringBuilder andString = new StringBuilder();
|
StringBuilder andString = new StringBuilder();
|
||||||
foreach (var primaryField in primaryFields)
|
foreach (var primaryField in primaryFields)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i != 0)
|
||||||
andString.Append(DeleteBuilder.WhereInAndTemplate + UtilConstants.Space);
|
andString.Append(DeleteBuilder.WhereInAndTemplate + UtilConstants.Space);
|
||||||
var entityPropertyName = this.Context.EntityMaintenance.GetPropertyName<T>(primaryField);
|
var entityPropertyName = this.Context.EntityMaintenance.GetPropertyName<T>(primaryField);
|
||||||
var columnInfo = EntityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
|
var columnInfo = EntityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return "[{0}]=N'{1}'";
|
return Builder.SqlTranslationLeft+"{0}"+Builder.SqlTranslationRight+"=N'{1}'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public string WhereInAreaTemplate
|
public string WhereInAreaTemplate
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ namespace SqlSugar
|
|||||||
CommandType CommandType { get; set; }
|
CommandType CommandType { get; set; }
|
||||||
String AppendWhereOrAnd(bool isWhere, string sqlString);
|
String AppendWhereOrAnd(bool isWhere, string sqlString);
|
||||||
string AppendHaving(string sqlString);
|
string AppendHaving(string sqlString);
|
||||||
|
string SqlTranslationLeft { get; }
|
||||||
|
string SqlTranslationRight { get; }
|
||||||
SqlQueryBuilder SqlQueryBuilder { get; set; }
|
SqlQueryBuilder SqlQueryBuilder { get; set; }
|
||||||
QueryBuilder QueryBuilder { get; set; }
|
QueryBuilder QueryBuilder { get; set; }
|
||||||
InsertBuilder InsertBuilder { get; set; }
|
InsertBuilder InsertBuilder { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user