mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-02-27 16:50:33 +08:00
Update .net core
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class DeleteNavProvider<Root,T>
|
||||||
|
{
|
||||||
|
|
||||||
|
public List<Root> Roots { get; set; }
|
||||||
|
|
||||||
|
public DeleteNavProvider<Root,TChild> ThenInclude<TChild>(Expression<Func<T,TChild>> expression)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeleteNavProvider<Root,Root> AsNav()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class InsertNavProvider<Root,T>
|
||||||
|
{
|
||||||
|
|
||||||
|
public List<Root> Roots { get; set; }
|
||||||
|
|
||||||
|
public InsertNavProvider<Root,TChild> ThenInclude<TChild>(Expression<Func<T,TChild>> expression)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsertNavProvider<Root,Root> AsNav()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class UpdateNavProvider<Root,T>
|
||||||
|
{
|
||||||
|
|
||||||
|
public List<Root> Roots { get; set; }
|
||||||
|
|
||||||
|
public UpdateNavProvider<Root,TChild> ThenInclude<TChild>(Expression<Func<T,TChild>> expression)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UpdateNavProvider<Root,Root> AsNav()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -294,7 +294,11 @@ namespace SqlSugar
|
|||||||
var navEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(navType);
|
var navEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(navType);
|
||||||
this.Context.InitMappingInfo(navEntityInfo.Type);
|
this.Context.InitMappingInfo(navEntityInfo.Type);
|
||||||
var navPkColumn = navEntityInfo.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
|
var navPkColumn = navEntityInfo.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
|
||||||
Check.ExceptionEasy(navPkColumn==null, navEntityInfo.EntityName+ "need primarykey", navEntityInfo.EntityName + " 需要主键");
|
Check.ExceptionEasy(navPkColumn==null&& navObjectNameColumnInfo.Navigat.Name2==null, navEntityInfo.EntityName+ "need primarykey", navEntityInfo.EntityName + " 需要主键");
|
||||||
|
if (navPkColumn==null)
|
||||||
|
{
|
||||||
|
navPkColumn = navEntityInfo.Columns.Where(it => it.PropertyName== navObjectNameColumnInfo.Navigat.Name2).FirstOrDefault();
|
||||||
|
}
|
||||||
var ids = list.Select(it => it.GetType().GetProperty(navObjectNameColumnInfo.Navigat.Name).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
|
var ids = list.Select(it => it.GetType().GetProperty(navObjectNameColumnInfo.Navigat.Name).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
|
||||||
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
|
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
|
||||||
conditionalModels.Add((new ConditionalModel()
|
conditionalModels.Add((new ConditionalModel()
|
||||||
@@ -336,7 +340,11 @@ namespace SqlSugar
|
|||||||
Check.ExceptionEasy(navColumn == null, $"{navEntityInfo.EntityName} not found {navObjectNameColumnInfo.Navigat.Name} ", $"实体 {navEntityInfo.EntityName} 未找到导航配置列 {navObjectNameColumnInfo.Navigat.Name} ");
|
Check.ExceptionEasy(navColumn == null, $"{navEntityInfo.EntityName} not found {navObjectNameColumnInfo.Navigat.Name} ", $"实体 {navEntityInfo.EntityName} 未找到导航配置列 {navObjectNameColumnInfo.Navigat.Name} ");
|
||||||
//var navType = navObjectNamePropety.PropertyType;
|
//var navType = navObjectNamePropety.PropertyType;
|
||||||
var listItemPkColumn = listItemEntity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
|
var listItemPkColumn = listItemEntity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
|
||||||
Check.ExceptionEasy(listItemPkColumn == null, listItemEntity.EntityName + " not primary key", listItemEntity.EntityName + "没有主键");
|
Check.ExceptionEasy(listItemPkColumn == null&& navObjectNameColumnInfo.Navigat.Name2==null, listItemEntity.EntityName + " not primary key", listItemEntity.EntityName + "没有主键");
|
||||||
|
if (listItemPkColumn == null)
|
||||||
|
{
|
||||||
|
listItemPkColumn = listItemEntity.Columns.Where(it => it.PropertyName== navObjectNameColumnInfo.Navigat.Name2).FirstOrDefault();
|
||||||
|
}
|
||||||
var ids = list.Select(it => it.GetType().GetProperty(listItemPkColumn.PropertyName).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
|
var ids = list.Select(it => it.GetType().GetProperty(listItemPkColumn.PropertyName).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
|
||||||
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
|
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
|
||||||
conditionalModels.Add((new ConditionalModel()
|
conditionalModels.Add((new ConditionalModel()
|
||||||
|
|||||||
@@ -889,6 +889,39 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Nav CUD
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(T data)
|
||||||
|
{
|
||||||
|
return InsertNav(new List<T>() { data });
|
||||||
|
}
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
var result = new InsertNavProvider<T, T>();
|
||||||
|
result.Roots = datas;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(T data)
|
||||||
|
{
|
||||||
|
return DeleteNav(new List<T>() { data });
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
var result = new DeleteNavProvider<T, T>();
|
||||||
|
result.Roots = datas;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(T data)
|
||||||
|
{
|
||||||
|
return UpdateNav(new List<T>() { data });
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
var result = new UpdateNavProvider<T, T>();
|
||||||
|
result.Roots = datas;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region DbFirst
|
#region DbFirst
|
||||||
public virtual IDbFirst DbFirst
|
public virtual IDbFirst DbFirst
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -678,6 +678,30 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return ScopedContext.Saveable(saveObject);
|
return ScopedContext.Saveable(saveObject);
|
||||||
}
|
}
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.InsertNav(data);
|
||||||
|
}
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.InsertNav(datas);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteNav(data);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteNav(datas);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateNav(data);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateNav(datas);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,6 +215,7 @@ namespace SqlSugar
|
|||||||
public class Navigate: Attribute
|
public class Navigate: Attribute
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
public string Name2 { get; set; }
|
||||||
public Type MappingType { get; set; }
|
public Type MappingType { get; set; }
|
||||||
public string MappingAId { get; set; }
|
public string MappingAId { get; set; }
|
||||||
public string MappingBId { get; set; }
|
public string MappingBId { get; set; }
|
||||||
@@ -224,6 +225,12 @@ namespace SqlSugar
|
|||||||
this.Name = name;
|
this.Name = name;
|
||||||
this.NavigatType = navigatType;
|
this.NavigatType = navigatType;
|
||||||
}
|
}
|
||||||
|
public Navigate(NavigateType navigatType, string firstName,string lastName)
|
||||||
|
{
|
||||||
|
this.Name = firstName;
|
||||||
|
this.Name2 = lastName;
|
||||||
|
this.NavigatType = navigatType;
|
||||||
|
}
|
||||||
public Navigate(Type MappingTableType,string typeAiD,string typeBId)
|
public Navigate(Type MappingTableType,string typeAiD,string typeBId)
|
||||||
{
|
{
|
||||||
this.MappingType = MappingTableType;
|
this.MappingType = MappingTableType;
|
||||||
|
|||||||
@@ -168,6 +168,10 @@ namespace SqlSugar
|
|||||||
private MapperSql GetOneToManySql()
|
private MapperSql GetOneToManySql()
|
||||||
{
|
{
|
||||||
var pkColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey == true);
|
var pkColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey == true);
|
||||||
|
if (pkColumn == null && Navigat.Name2 != null)
|
||||||
|
{
|
||||||
|
pkColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyName== Navigat.Name2);
|
||||||
|
}
|
||||||
Check.ExceptionEasy(pkColumn == null, $"{this.EntityInfo.EntityName} need primary key ",
|
Check.ExceptionEasy(pkColumn == null, $"{this.EntityInfo.EntityName} need primary key ",
|
||||||
$"导航属性 {this.EntityInfo.EntityName}需要主键");
|
$"导航属性 {this.EntityInfo.EntityName}需要主键");
|
||||||
var pk = pkColumn.DbColumnName;
|
var pk = pkColumn.DbColumnName;
|
||||||
|
|||||||
@@ -77,7 +77,18 @@ namespace SqlSugar
|
|||||||
" NavigateType.Dynamic no support expression . "+ this.ProPertyEntity.Type.Name,
|
" NavigateType.Dynamic no support expression . "+ this.ProPertyEntity.Type.Name,
|
||||||
" NavigateType.Dynamic 自定义导航对象不支持在Where(x=>x.自定义.Id==1)等方法中使用"+ this.ProPertyEntity.Type.Name);
|
" NavigateType.Dynamic 自定义导航对象不支持在Where(x=>x.自定义.Id==1)等方法中使用"+ this.ProPertyEntity.Type.Name);
|
||||||
}
|
}
|
||||||
var pk = this.ProPertyEntity.Columns.First(it => it.IsPrimarykey == true).DbColumnName;
|
var pk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true)?.DbColumnName;
|
||||||
|
if (pk == null && Navigat.Name2 != null)
|
||||||
|
{
|
||||||
|
pk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.PropertyName == Navigat.Name2)?.DbColumnName;
|
||||||
|
}
|
||||||
|
if(pk==null)
|
||||||
|
{
|
||||||
|
Check.ExceptionEasy(
|
||||||
|
true,
|
||||||
|
$"{this.ProPertyEntity.EntityName} naviate config error",
|
||||||
|
$"{this.ProPertyEntity.EntityName} 导航配置错误");
|
||||||
|
}
|
||||||
var name = this.EntityInfo.Columns.First(it => it.PropertyName == Navigat.Name).DbColumnName;
|
var name = this.EntityInfo.Columns.First(it => it.PropertyName == Navigat.Name).DbColumnName;
|
||||||
var selectName = this.ProPertyEntity.Columns.First(it => it.PropertyName ==MemberName).DbColumnName;
|
var selectName = this.ProPertyEntity.Columns.First(it => it.PropertyName ==MemberName).DbColumnName;
|
||||||
MapperSql mapper = new MapperSql();
|
MapperSql mapper = new MapperSql();
|
||||||
|
|||||||
@@ -202,5 +202,14 @@ namespace SqlSugar
|
|||||||
Task ThenMapperAsync<T>(IEnumerable<T> list, Func<T,Task> action);
|
Task ThenMapperAsync<T>(IEnumerable<T> list, Func<T,Task> action);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Nav CUD
|
||||||
|
InsertNavProvider<T, T> InsertNav<T>(T data);
|
||||||
|
InsertNavProvider<T, T> InsertNav<T>(List<T> datas);
|
||||||
|
DeleteNavProvider<T, T> DeleteNav<T>(T data);
|
||||||
|
DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas);
|
||||||
|
UpdateNavProvider<T, T> UpdateNav<T>(T data);
|
||||||
|
UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas);
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,6 +153,33 @@ namespace SqlSugar
|
|||||||
|
|
||||||
#region Queryable
|
#region Queryable
|
||||||
|
|
||||||
|
#region Nav CUD
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(T data)
|
||||||
|
{
|
||||||
|
return this.Context.InsertNav(data);
|
||||||
|
}
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return this.Context.InsertNav(datas);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(T data)
|
||||||
|
{
|
||||||
|
return this.Context.DeleteNav(data);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return this.Context.DeleteNav(datas);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(T data)
|
||||||
|
{
|
||||||
|
return this.Context.UpdateNav(data);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return this.Context.UpdateNav(datas);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Union
|
#region Union
|
||||||
public ISugarQueryable<T> Union<T>(List<ISugarQueryable<T>> queryables) where T : class, new()
|
public ISugarQueryable<T> Union<T>(List<ISugarQueryable<T>> queryables) where T : class, new()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -723,5 +723,31 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return ScopedContext.DeleteableWithAttr<T>(deleteObjs);
|
return ScopedContext.DeleteableWithAttr<T>(deleteObjs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.InsertNav(data);
|
||||||
|
}
|
||||||
|
public InsertNavProvider<T, T> InsertNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.InsertNav(datas);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteNav(data);
|
||||||
|
}
|
||||||
|
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.DeleteNav(datas);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(T data)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateNav(data);
|
||||||
|
}
|
||||||
|
public UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas)
|
||||||
|
{
|
||||||
|
return ScopedContext.UpdateNav(datas);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user