This commit is contained in:
sunkaixuan
2017-05-18 12:51:40 +08:00
parent 35bd00ac68
commit e6da77cce3
2 changed files with 101 additions and 71 deletions

View File

@@ -13,6 +13,13 @@ namespace SqlSugar
public IDb Db { get { return Context.Database; } }
public ISqlBuilder SqlBuilder { get; set; }
public DeleteBuilder DeleteBuilder { get; set; }
public EntityInfo EntityInfo
{
get
{
return this.Context.EntityProvider.GetEntityInfo<T>();
}
}
public int ExecuteCommand()
{
string sql = DeleteBuilder.ToSqlString();
@@ -28,11 +35,8 @@ namespace SqlSugar
return this;
}
string tableName = this.Context.EntityProvider.GetTableName<T>();
var entityInfo = this.Context.EntityProvider.GetEntityInfo<T>();
if (this.Context.IsSystemTablesConfig)
{
var primaryFields = this.Db.DbMaintenance.GetPrimaries(tableName).ToArray();
var isSinglePrimaryKey = primaryFields.Length == 1;
var primaryFields = this.GetPrimaryKeys();
var isSinglePrimaryKey = primaryFields.Count == 1;
Check.ArgumentNullException(primaryFields, string.Format("Table {0} with no primarykey", tableName));
if (isSinglePrimaryKey)
{
@@ -41,7 +45,7 @@ namespace SqlSugar
foreach (var deleteObj in deleteObjs)
{
var entityPropertyName = this.Context.EntityProvider.GetEntityPropertyName<T>(primaryField);
var columnInfo = entityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
var columnInfo = EntityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
var value = columnInfo.PropertyInfo.GetValue(deleteObj, null);
primaryKeyValues.Add(value);
}
@@ -66,7 +70,7 @@ namespace SqlSugar
if (i == 0)
andString.Append(DeleteBuilder.WhereInAndTemplate + PubConst.Space);
var entityPropertyName = this.Context.EntityProvider.GetEntityPropertyName<T>(primaryField);
var columnInfo = entityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
var columnInfo = EntityInfo.Columns.Single(it => it.PropertyName == entityPropertyName);
var entityValue = columnInfo.PropertyInfo.GetValue(deleteObj, null);
andString.AppendFormat(DeleteBuilder.WhereInEqualTemplate, primaryField, entityValue);
++i;
@@ -76,11 +80,6 @@ namespace SqlSugar
}
Where(string.Format(DeleteBuilder.WhereInAreaTemplate, whereInSql.ToString()));
}
}
else
{
}
return this;
}
@@ -124,16 +123,9 @@ namespace SqlSugar
}
string tableName = this.Context.EntityProvider.GetTableName<T>();
string primaryField = null;
if (this.Context.IsSystemTablesConfig)
{
primaryField = this.Db.DbMaintenance.GetPrimaries(tableName).FirstOrDefault();
primaryField = GetPrimaryKeys().FirstOrDefault();
Check.ArgumentNullException(primaryField, "Table " + tableName + " with no primarykey");
Where(string.Format(DeleteBuilder.WhereInTemplate, primaryField, primaryKeyValues.ToJoinSqlInVals()));
}
else
{
}
return this;
}
@@ -156,5 +148,29 @@ namespace SqlSugar
var paramters = DeleteBuilder.Parameters == null ? null : DeleteBuilder.Parameters.ToList();
return new KeyValuePair<string, List<SugarParameter>>(sql, paramters);
}
private List<string> GetPrimaryKeys()
{
if (this.Context.IsSystemTablesConfig)
{
return this.Context.Database.DbMaintenance.GetPrimaries(this.EntityInfo.DbTableName);
}
else
{
return this.EntityInfo.Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList();
}
}
private List<string> GetIdentityKeys()
{
if (this.Context.IsSystemTablesConfig)
{
return this.Context.Database.DbMaintenance.GetIsIdentities(this.EntityInfo.DbTableName);
}
else
{
return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList();
}
}
}
}

View File

@@ -88,9 +88,7 @@ namespace SqlSugar
#region Identities
if (!IsOffIdentity)
{
if (this.Context.IsSystemTablesConfig)
{
List<string> identities = Db.DbMaintenance.GetIsIdentities(this.InsertBuilder.TableName);
List<string> identities = GetIdentityKeys();
if (identities != null && identities.Any())
{
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it =>
@@ -99,11 +97,6 @@ namespace SqlSugar
}).ToList();
}
}
else
{
}
}
#endregion
#region IgnoreColumns
@@ -177,7 +170,28 @@ namespace SqlSugar
}
}
private List<string> GetPrimaryKeys()
{
if (this.Context.IsSystemTablesConfig)
{
return this.Context.Database.DbMaintenance.GetPrimaries(this.EntityInfo.DbTableName);
}
else
{
return this.EntityInfo.Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList();
}
}
private List<string> GetIdentityKeys()
{
if (this.Context.IsSystemTablesConfig)
{
return this.Context.Database.DbMaintenance.GetIsIdentities(this.EntityInfo.DbTableName);
}
else
{
return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList();
}
}
#endregion
}
}