mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 16:18:47 +08:00
Add Queryable.WhereClassByPrimaryKey
This commit is contained in:
parent
059ca5650e
commit
19d2a91fbc
@ -84,7 +84,46 @@ namespace OrmTest
|
|||||||
Console.Write(item.StorageMessage+" ");
|
Console.Write(item.StorageMessage+" ");
|
||||||
}
|
}
|
||||||
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
|
IDemo2();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void IDemo1()
|
||||||
|
{
|
||||||
|
var db = Db;
|
||||||
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
|
List<UinitBlukTable> list2 = new List<UinitBlukTable>();
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 1, Name = "a", Create = DateTime.Now });
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 2, Name = "a", Create = DateTime.Now });
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 0, Name = "a", Create = DateTime.Now });
|
||||||
|
|
||||||
|
var x = Db.Storageable(list2)
|
||||||
|
.SplitUpdate(it => it.Item.Id > 0)
|
||||||
|
.SplitInsert(it => it.Item.Id == 0).ToStorage();
|
||||||
|
x.AsInsertable.ExecuteCommand();
|
||||||
|
x.AsUpdateable.ExecuteCommand();
|
||||||
|
|
||||||
|
|
||||||
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
|
}
|
||||||
|
private static void IDemo2()
|
||||||
|
{
|
||||||
|
var db = Db;
|
||||||
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
|
List<UinitBlukTable> list2 = new List<UinitBlukTable>();
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 1, Name = "a1", Create = DateTime.Now });
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 2, Name = "a2", Create = DateTime.Now });
|
||||||
|
list2.Add(new UinitBlukTable() { Id = 3, Name = "a3", Create = DateTime.Now });
|
||||||
|
db.Insertable(list2[1]).ExecuteCommand();
|
||||||
|
|
||||||
|
var x = Db.Storageable(list2)
|
||||||
|
.SplitUpdate(it => it.Any(y=>y.Id==it.Item.Id))
|
||||||
|
.SplitInsert(it => it.NotAny(y => y.Id == it.Item.Id)).ToStorage();
|
||||||
|
x.AsInsertable.ExecuteCommand();
|
||||||
|
x.AsUpdateable.ExecuteCommand();
|
||||||
|
db.DbMaintenance.TruncateTable<UinitBlukTable>();
|
||||||
|
}
|
||||||
|
|
||||||
public class UinitBlukTable
|
public class UinitBlukTable
|
||||||
{
|
{
|
||||||
[SqlSugar.SugarColumn(IsPrimaryKey =true)]
|
[SqlSugar.SugarColumn(IsPrimaryKey =true)]
|
||||||
|
@ -197,6 +197,70 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return WhereClass(new List<ClassType>() { whereClass }, ignoreDefaultValue);
|
return WhereClass(new List<ClassType>() { whereClass }, ignoreDefaultValue);
|
||||||
}
|
}
|
||||||
|
public ISugarQueryable<T> WhereClassByPrimaryKey(List<T> list)
|
||||||
|
{
|
||||||
|
_WhereClassByPrimaryKey(list);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
public ISugarQueryable<T> WhereClassByPrimaryKey(T data)
|
||||||
|
{
|
||||||
|
_WhereClassByPrimaryKey(new List<T>() { data });
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// if a property that is primary key is a condition
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="whereClassTypes"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ISugarQueryable<T> _WhereClassByPrimaryKey(List<T> whereClassTypes)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (whereClassTypes.HasValue())
|
||||||
|
{
|
||||||
|
var columns = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsIgnore == false && it.IsPrimarykey == true).ToList();
|
||||||
|
Check.Exception(columns == null || columns.Count == 0, "{0} no primary key, Can not use WhereClassByPrimaryKey ", typeof(T).Name);
|
||||||
|
Check.Exception(this.QueryBuilder.IsSingle() == false, "No support join query");
|
||||||
|
List<IConditionalModel> whereModels = new List<IConditionalModel>();
|
||||||
|
foreach (var item in whereClassTypes)
|
||||||
|
{
|
||||||
|
var cons = new ConditionalCollections();
|
||||||
|
foreach (var column in columns)
|
||||||
|
{
|
||||||
|
WhereType WhereType = WhereType.And;
|
||||||
|
var value = column.PropertyInfo.GetValue(item, null);
|
||||||
|
if (cons.ConditionalList == null)
|
||||||
|
{
|
||||||
|
cons.ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>();
|
||||||
|
if (QueryBuilder.WhereInfos.IsNullOrEmpty() && whereModels.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WhereType = WhereType.Or;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cons.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(WhereType, new ConditionalModel()
|
||||||
|
{
|
||||||
|
ConditionalType = ConditionalType.Equal,
|
||||||
|
FieldName = this.QueryBuilder.Builder.GetTranslationColumnName(column.DbColumnName),
|
||||||
|
FieldValue = value.ObjToString()
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (cons.HasValue())
|
||||||
|
{
|
||||||
|
whereModels.Add(cons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.Where(whereModels);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Where(" 1=2 ");
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// if a property that is not empty is a condition
|
/// if a property that is not empty is a condition
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -71,7 +71,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
if (whereExpression == null && pkInfos.Any())
|
if (whereExpression == null && pkInfos.Any())
|
||||||
{
|
{
|
||||||
|
this.Context.Utilities.PageEach(allDatas, 300, item => {
|
||||||
|
var addItems=this.Context.Queryable<T>().WhereClassByPrimaryKey(item.Select(it => it.Item).ToList()).ToList();
|
||||||
|
dbDataList.AddRange(addItems);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
var messageList = allDatas.Select(it => new StorageableMessage<T>()
|
var messageList = allDatas.Select(it => new StorageableMessage<T>()
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,8 @@ namespace SqlSugar
|
|||||||
/// <param name="whereClassTypes"></param>
|
/// <param name="whereClassTypes"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
ISugarQueryable<T> WhereClass<ClassType>(List<ClassType> whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new();
|
ISugarQueryable<T> WhereClass<ClassType>(List<ClassType> whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new();
|
||||||
|
ISugarQueryable<T> WhereClassByPrimaryKey(List<T> list);
|
||||||
|
ISugarQueryable<T> WhereClassByPrimaryKey(T data) ;
|
||||||
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
|
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
|
||||||
ISugarQueryable<T> Where(string whereString, object parameters = null);
|
ISugarQueryable<T> Where(string whereString, object parameters = null);
|
||||||
ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels);
|
ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels);
|
||||||
|
Loading…
Reference in New Issue
Block a user