mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 07:22:57 +08:00
Update Storageable
This commit is contained in:
parent
6489241d74
commit
99d64a9ea7
@ -11,8 +11,9 @@ namespace OrmTest
|
|||||||
public static void Insert()
|
public static void Insert()
|
||||||
{
|
{
|
||||||
var db = Db;
|
var db = Db;
|
||||||
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
|
||||||
db.CodeFirst.InitTables<UinitBlukTable>();
|
db.CodeFirst.InitTables<UinitBlukTable>();
|
||||||
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
db.Insertable(new List<UinitBlukTable>
|
db.Insertable(new List<UinitBlukTable>
|
||||||
{
|
{
|
||||||
new UinitBlukTable(){ Id=1,Create=DateTime.Now, Name="00" },
|
new UinitBlukTable(){ Id=1,Create=DateTime.Now, Name="00" },
|
||||||
@ -66,8 +67,8 @@ namespace OrmTest
|
|||||||
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
db.Insertable(new UinitBlukTable() { Id = 2, Name = "b", Create = DateTime.Now }).ExecuteCommand();
|
db.Insertable(new UinitBlukTable() { Id = 2, Name = "b", Create = DateTime.Now }).ExecuteCommand();
|
||||||
var x=Db.Storageable(list2)
|
var x=Db.Storageable(list2)
|
||||||
.SplitInsert(it => it.NotAny(y=>y.Id==it.Item.Id))
|
.SplitInsert(it => it.NotAny())
|
||||||
.SplitUpdate(it => it.Any(y => y.Id == it.Item.Id))
|
.SplitUpdate(it => it.Any())
|
||||||
.SplitDelete(it=>it.Item.Id>10)
|
.SplitDelete(it=>it.Item.Id>10)
|
||||||
.SplitIgnore(it=>it.Item.Id==1)
|
.SplitIgnore(it=>it.Item.Id==1)
|
||||||
.SplitError(it => it.Item.Id == 3,"id不能等于3")
|
.SplitError(it => it.Item.Id == 3,"id不能等于3")
|
||||||
|
@ -62,6 +62,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public StorageableResult<T> ToStorage()
|
public StorageableResult<T> ToStorage()
|
||||||
{
|
{
|
||||||
|
var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
|
||||||
if (this.allDatas.Count == 0)
|
if (this.allDatas.Count == 0)
|
||||||
return new StorageableResult<T>();
|
return new StorageableResult<T>();
|
||||||
var pkInfos = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsPrimarykey);
|
var pkInfos = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsPrimarykey);
|
||||||
@ -76,10 +77,12 @@ namespace SqlSugar
|
|||||||
dbDataList.AddRange(addItems);
|
dbDataList.AddRange(addItems);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
var pkProperties = GetPkProperties(pkInfos, entity);
|
||||||
var messageList = allDatas.Select(it => new StorageableMessage<T>()
|
var messageList = allDatas.Select(it => new StorageableMessage<T>()
|
||||||
{
|
{
|
||||||
Item = it.Item,
|
Item = it.Item,
|
||||||
Database = dbDataList
|
Database = dbDataList,
|
||||||
|
PkFields= pkProperties
|
||||||
}).ToList();
|
}).ToList();
|
||||||
foreach (var item in whereFuncs.OrderByDescending(it => (int)it.key))
|
foreach (var item in whereFuncs.OrderByDescending(it => (int)it.key))
|
||||||
{
|
{
|
||||||
@ -120,6 +123,12 @@ namespace SqlSugar
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string[] GetPkProperties(IEnumerable<EntityColumnInfo> pkInfos,EntityInfo entity)
|
||||||
|
{
|
||||||
|
return entity.Columns
|
||||||
|
.Where(it => it.IsPrimarykey||pkInfos.Any(y=>y.PropertyName==it.PropertyName)).Select(it => it.PropertyName).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public IStorageable<T> WhereColumns(Expression<Func<T, object>> columns)
|
public IStorageable<T> WhereColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
if (columns == null)
|
if (columns == null)
|
||||||
|
@ -22,6 +22,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public T Item { get; set; }
|
public T Item { get; set; }
|
||||||
internal List<T> Database { get; set; }
|
internal List<T> Database { get; set; }
|
||||||
|
internal string[] PkFields { get; set; }
|
||||||
public bool Any(Func<T,bool> expression)
|
public bool Any(Func<T,bool> expression)
|
||||||
{
|
{
|
||||||
return Database.Any(expression);
|
return Database.Any(expression);
|
||||||
@ -30,6 +31,19 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return !Database.Any(expression);
|
return !Database.Any(expression);
|
||||||
}
|
}
|
||||||
|
public bool Any()
|
||||||
|
{
|
||||||
|
var list = Database.Where(it=>true);
|
||||||
|
foreach (var pk in PkFields)
|
||||||
|
{
|
||||||
|
list = list.Where(it => it.GetType().GetProperty(pk).GetValue(it, null).ObjToString() == Item.GetType().GetProperty(pk).GetValue(Item, null).ObjToString());
|
||||||
|
}
|
||||||
|
return list.Any();
|
||||||
|
}
|
||||||
|
public bool NotAny()
|
||||||
|
{
|
||||||
|
return !Any();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StorageableMessage<T> : StorageableInfo<T> where T : class, new()
|
public class StorageableMessage<T> : StorageableInfo<T> where T : class, new()
|
||||||
|
Loading…
Reference in New Issue
Block a user