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