mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-24 04:53:45 +08:00
Update Discrimator
This commit is contained in:
@@ -387,8 +387,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.Where(whereString);
|
this.Where(whereString);
|
||||||
}
|
}
|
||||||
|
UtilMethods.AddDiscrimator(type,this);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ISugarQueryable<T> Mapper(Action<T> mapperAction)
|
public virtual ISugarQueryable<T> Mapper(Action<T> mapperAction)
|
||||||
{
|
{
|
||||||
this.MapperAction=UtilMethods.IsNullReturnNew(this.MapperAction);
|
this.MapperAction=UtilMethods.IsNullReturnNew(this.MapperAction);
|
||||||
|
@@ -127,6 +127,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
InitMappingInfo<T>();
|
InitMappingInfo<T>();
|
||||||
var result = this.CreateQueryable<T>();
|
var result = this.CreateQueryable<T>();
|
||||||
|
UtilMethods.AddDiscrimator(typeof(T), result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@@ -1265,5 +1265,23 @@ namespace SqlSugar
|
|||||||
var method = value.GetType().GetMethods().First(it => it.GetParameters().Length == 0 && it.Name == "ToShortDateString");
|
var method = value.GetType().GetMethods().First(it => it.GetParameters().Length == 0 && it.Name == "ToShortDateString");
|
||||||
return method.Invoke(value, new object[] { });
|
return method.Invoke(value, new object[] { });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal static void AddDiscrimator<T>(Type type, ISugarQueryable<T> queryable)
|
||||||
|
{
|
||||||
|
var entityInfo = queryable.Context?.EntityMaintenance?.GetEntityInfoWithAttr(type);
|
||||||
|
if (entityInfo!=null&&entityInfo.Discrimator.HasValue())
|
||||||
|
{
|
||||||
|
Check.ExceptionEasy(!Regex.IsMatch(entityInfo.Discrimator, @"^(?:\w+:\w+)(?:,\w+:\w+)*$"), "The format should be type:cat for this type, and if there are multiple, it can be FieldName:cat,FieldName2:dog ", "格式错误应该是type:cat这种格式,如果是多个可以FieldName:cat,FieldName2:dog,不要有空格");
|
||||||
|
var array = entityInfo.Discrimator.Split(',');
|
||||||
|
foreach (var disItem in array)
|
||||||
|
{
|
||||||
|
var name = disItem.Split(':').First();
|
||||||
|
var value = disItem.Split(':').Last();
|
||||||
|
queryable.Where(name, "=", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user