Update db.Storageable

This commit is contained in:
sunkaixuna
2021-12-20 12:30:21 +08:00
parent 5632f1852b
commit b43b6181a5
3 changed files with 25 additions and 3 deletions

View File

@@ -41,7 +41,7 @@ namespace OrmTest
x2.BulkCopy(); x2.BulkCopy();
x2.BulkUpdate(); x2.BulkUpdate();
var dt = db.Queryable<Order>().ToDataTable(); var dt = db.Queryable<Order>().Take(1).ToDataTable();
dt.TableName = "order"; dt.TableName = "order";
var addRow = dt.NewRow(); var addRow = dt.NewRow();
addRow["id"] = 0; addRow["id"] = 0;
@@ -54,7 +54,14 @@ namespace OrmTest
x3.AsInsertable.IgnoreColumns("id").ExecuteCommand(); x3.AsInsertable.IgnoreColumns("id").ExecuteCommand();
x3.AsUpdateable.ExecuteCommand(); x3.AsUpdateable.ExecuteCommand();
var x4 =
db.Storageable(dt)
.SplitDelete(it=>Convert.ToInt32( it["id"])>0)
.WhereColumns("id").ToStorage();
x4.AsDeleteable.ExecuteCommand();
Console.WriteLine(""); Console.WriteLine("");
Console.WriteLine("#### Saveable End ####"); Console.WriteLine("#### Saveable End ####");
} }

View File

@@ -242,6 +242,10 @@ namespace SqlSugar
} }
public IDeleteable<T> Where(List<IConditionalModel> conditionalModels) public IDeleteable<T> Where(List<IConditionalModel> conditionalModels)
{ {
if (conditionalModels.Count == 0)
{
return Where("1=2");
}
var sql = this.Context.Queryable<T>().SqlBuilder.ConditionalModelToSql(conditionalModels); var sql = this.Context.Queryable<T>().SqlBuilder.ConditionalModelToSql(conditionalModels);
var result = this; var result = this;
result.Where(sql.Key, sql.Value); result.Where(sql.Key, sql.Value);

View File

@@ -86,16 +86,22 @@ namespace SqlSugar
{ {
SplitMethod(item.value1,item.key,row,item.value2); SplitMethod(item.value1,item.key,row,item.value2);
} }
if (row[SugarGroupId] == null || row[SugarGroupId] == DBNull.Value)
{
row[SugarGroupId] = StorageType.Ignore;
}
} }
DataTable.Columns.Remove(SugarUpdateRows); DataTable.Columns.Remove(SugarUpdateRows);
DataTable.Columns.Remove(SugarColumns); DataTable.Columns.Remove(SugarColumns);
var Groups=DataTable.Rows.Cast<DataRow>() var Groups=DataTable.Rows.Cast<DataRow>()
.Where(it=> it[SugarGroupId]!=null&& it[SugarGroupId] != DBNull.Value)
.GroupBy(it => ((StorageType)it[SugarGroupId]).ToString()).Select(it=>new DataTableGroups{ Type=it.Key,DataTable= it.CopyToDataTable() }) .GroupBy(it => ((StorageType)it[SugarGroupId]).ToString()).Select(it=>new DataTableGroups{ Type=it.Key,DataTable= it.CopyToDataTable() })
.ToList(); .ToList();
DataTable.Columns.Remove(SugarGroupId); DataTable.Columns.Remove(SugarGroupId);
DataTable.Columns.Remove(SugarErrorMessage); DataTable.Columns.Remove(SugarErrorMessage);
var inserList = new List<Dictionary<string, object>>(); var inserList = new List<Dictionary<string, object>>();
var updateList = new List<Dictionary<string, object>>(); var updateList = new List<Dictionary<string, object>>();
var DeleteList=Groups.FirstOrDefault(it=>it.Type==StorageType.Delete.ToString());
if (Groups.Any(it => it.Type == StorageType.Insert.ToString())) if (Groups.Any(it => it.Type == StorageType.Insert.ToString()))
{ {
foreach (var item in Groups) foreach (var item in Groups)
@@ -120,11 +126,16 @@ namespace SqlSugar
} }
} }
} }
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
if (DeleteList!=null)
{
SetConditList(DeleteList.DataTable.Rows.Cast<DataRow>().ToList(), Columns, conditionalModels);
}
var tableName = this.Context.Queryable<object>().SqlBuilder.GetTranslationTableName(DataTable.TableName); var tableName = this.Context.Queryable<object>().SqlBuilder.GetTranslationTableName(DataTable.TableName);
DataTableResult result = new DataTableResult() DataTableResult result = new DataTableResult()
{ {
DataTableGroups=Groups, DataTableGroups=Groups,
AsDeleteable=this.Context.Deleteable<object>().AS(tableName).Where(""), AsDeleteable=this.Context.Deleteable<object>().AS(tableName).Where(conditionalModels),
AsUpdateable= this.Context.Updateable(updateList).AS(tableName).WhereColumns(Columns), AsUpdateable= this.Context.Updateable(updateList).AS(tableName).WhereColumns(Columns),
AsInsertable=this.Context.Insertable(inserList).AS(tableName) AsInsertable=this.Context.Insertable(inserList).AS(tableName)
}; };