针对唯一索引,生成多个前缀查询
This commit is contained in:
parent
51076a05ea
commit
1c0a974d70
|
@ -1561,12 +1561,23 @@ public class EntityBuilder : ClassBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
// 只有整数和字符串能生成查询函数
|
// 只有整数和字符串能生成查询函数
|
||||||
if (cs.Any(e => !IsIntOrString(e))) continue;
|
if (cs.Any(e => !CanSearch(e))) continue;
|
||||||
|
|
||||||
// 返回类型
|
// 唯一索引
|
||||||
if (di.Unique)
|
if (di.Unique)
|
||||||
{
|
{
|
||||||
if (BuildExtendFind(cs, methods)) methods++;
|
if (BuildExtendFind(cs, methods)) methods++;
|
||||||
|
|
||||||
|
// 生成多个前缀查询
|
||||||
|
for (var i = 1; i < cs.Length; i++)
|
||||||
|
{
|
||||||
|
// 如果当前字段不可查询,则终止
|
||||||
|
if (!CanSearch(cs[i - 1])) break;
|
||||||
|
|
||||||
|
var cs2 = cs.Take(i).ToArray();
|
||||||
|
|
||||||
|
if (BuildExtendFindAll(cs2, methods)) methods++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1644,8 +1655,10 @@ public class EntityBuilder : ClassBuilder
|
||||||
WriteLine("if ({0} < 0) return null;", dc.CamelName());
|
WriteLine("if ({0} < 0) return null;", dc.CamelName());
|
||||||
else if (dc.DataType == typeof(String))
|
else if (dc.DataType == typeof(String))
|
||||||
WriteLine("if ({0}.IsNullOrEmpty()) return null;", dc.CamelName());
|
WriteLine("if ({0}.IsNullOrEmpty()) return null;", dc.CamelName());
|
||||||
|
else if (dc.DataType == typeof(DateTime) && dc.ItemType.EqualIgnoreCase("date"))
|
||||||
|
WriteLine("if ({0}.Year < 2000) return null;", dc.CamelName());
|
||||||
|
|
||||||
header |= IsIntOrString(dc);
|
header |= CanSearch(dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
var exp = new StringBuilder();
|
var exp = new StringBuilder();
|
||||||
|
@ -1750,8 +1763,10 @@ public class EntityBuilder : ClassBuilder
|
||||||
WriteLine("if ({0} < 0) return [];", dc.CamelName(), ClassName);
|
WriteLine("if ({0} < 0) return [];", dc.CamelName(), ClassName);
|
||||||
else if (dc.DataType == typeof(String))
|
else if (dc.DataType == typeof(String))
|
||||||
WriteLine("if ({0}.IsNullOrEmpty()) return [];", dc.CamelName(), ClassName);
|
WriteLine("if ({0}.IsNullOrEmpty()) return [];", dc.CamelName(), ClassName);
|
||||||
|
else if (dc.DataType == typeof(DateTime) && dc.ItemType.EqualIgnoreCase("date"))
|
||||||
|
WriteLine("if ({0}.Year < 2000) return [];", dc.CamelName());
|
||||||
|
|
||||||
header |= IsIntOrString(dc);
|
header |= CanSearch(dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
var exp = new StringBuilder();
|
var exp = new StringBuilder();
|
||||||
|
@ -1972,6 +1987,18 @@ public class EntityBuilder : ClassBuilder
|
||||||
#endregion 业务类
|
#endregion 业务类
|
||||||
|
|
||||||
#region 辅助
|
#region 辅助
|
||||||
private Boolean IsIntOrString(IDataColumn column) => column.DataType != null && (column.DataType.IsInt() || column.DataType == typeof(String));
|
/// <summary>该列是否能够搜索。整型、字符串以及日期类型可以搜索</summary>
|
||||||
|
/// <param name="column"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private Boolean CanSearch(IDataColumn column)
|
||||||
|
{
|
||||||
|
if (column.DataType == null) return false;
|
||||||
|
|
||||||
|
if (column.DataType.IsInt()) return true;
|
||||||
|
if (column.DataType == typeof(String)) return true;
|
||||||
|
if (column.DataType == typeof(DateTime) && column.ItemType.EqualIgnoreCase("date")) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
|
@ -264,7 +264,7 @@ public partial class Area : IArea, IEntity<IArea>
|
||||||
/// <summary>根据编码查找</summary>
|
/// <summary>根据编码查找</summary>
|
||||||
/// <param name="id">编码</param>
|
/// <param name="id">编码</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Area FindByID(Int32 id)
|
public static Area? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -336,7 +336,7 @@ public partial class Parameter : IParameter, IEntity<IParameter>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Parameter FindByID(Int32 id)
|
public static Parameter? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ public partial class Parameter : IParameter, IEntity<IParameter>
|
||||||
/// <param name="category">类别</param>
|
/// <param name="category">类别</param>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Parameter FindByUserIDAndCategoryAndName(Int32 userId, String category, String name)
|
public static Parameter? FindByUserIDAndCategoryAndName(Int32 userId, String category, String name)
|
||||||
{
|
{
|
||||||
if (userId < 0) return null;
|
if (userId < 0) return null;
|
||||||
if (category.IsNullOrEmpty()) return null;
|
if (category.IsNullOrEmpty()) return null;
|
||||||
|
@ -366,6 +366,34 @@ public partial class Parameter : IParameter, IEntity<IParameter>
|
||||||
return Find(_.UserID == userId & _.Category == category & _.Name == name);
|
return Find(_.UserID == userId & _.Category == category & _.Name == name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>根据用户查找</summary>
|
||||||
|
/// <param name="userId">用户</param>
|
||||||
|
/// <returns>实体列表</returns>
|
||||||
|
public static IList<Parameter> FindAllByUserID(Int32 userId)
|
||||||
|
{
|
||||||
|
if (userId < 0) return [];
|
||||||
|
|
||||||
|
// 实体缓存
|
||||||
|
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.UserID == userId);
|
||||||
|
|
||||||
|
return FindAll(_.UserID == userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>根据用户、类别查找</summary>
|
||||||
|
/// <param name="userId">用户</param>
|
||||||
|
/// <param name="category">类别</param>
|
||||||
|
/// <returns>实体列表</returns>
|
||||||
|
public static IList<Parameter> FindAllByUserIDAndCategory(Int32 userId, String category)
|
||||||
|
{
|
||||||
|
if (userId < 0) return [];
|
||||||
|
if (category.IsNullOrEmpty()) return [];
|
||||||
|
|
||||||
|
// 实体缓存
|
||||||
|
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.UserID == userId && e.Category.EqualIgnoreCase(category));
|
||||||
|
|
||||||
|
return FindAll(_.UserID == userId & _.Category == category);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>根据类别、名称查找</summary>
|
/// <summary>根据类别、名称查找</summary>
|
||||||
/// <param name="category">类别</param>
|
/// <param name="category">类别</param>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
|
|
|
@ -287,7 +287,7 @@ public partial class MemberLog : IMemberLog, IEntity<IMemberLog>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static MemberLog FindByID(Int64 id)
|
public static MemberLog? FindByID(Int64 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -278,7 +278,7 @@ public partial class Log : ILog, IEntity<ILog>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Log FindByID(Int64 id)
|
public static Log? FindByID(Int64 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -473,7 +473,7 @@ public partial class User : IUser, IEntity<IUser>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static User FindByID(Int32 id)
|
public static User? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ public partial class User : IUser, IEntity<IUser>
|
||||||
/// <summary>根据名称查找</summary>
|
/// <summary>根据名称查找</summary>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static User FindByName(String name)
|
public static User? FindByName(String name)
|
||||||
{
|
{
|
||||||
if (name.IsNullOrEmpty()) return null;
|
if (name.IsNullOrEmpty()) return null;
|
||||||
|
|
||||||
|
|
|
@ -289,7 +289,7 @@ public partial class UserLog : IUserLog, IEntity<IUserLog>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static UserLog FindByID(Int64 id)
|
public static UserLog? FindByID(Int64 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ public partial class Tenant : ITenant, IEntity<ITenant>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Tenant FindById(Int32 id)
|
public static Tenant? FindById(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ public partial class Tenant : ITenant, IEntity<ITenant>
|
||||||
/// <summary>根据编码查找</summary>
|
/// <summary>根据编码查找</summary>
|
||||||
/// <param name="code">编码</param>
|
/// <param name="code">编码</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Tenant FindByCode(String code)
|
public static Tenant? FindByCode(String code)
|
||||||
{
|
{
|
||||||
if (code.IsNullOrEmpty()) return null;
|
if (code.IsNullOrEmpty()) return null;
|
||||||
|
|
||||||
|
|
|
@ -227,7 +227,7 @@ public partial class TenantUser : ITenantUser, IEntity<ITenantUser>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static TenantUser FindById(Int32 id)
|
public static TenantUser? FindById(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ public partial class TenantUser : ITenantUser, IEntity<ITenantUser>
|
||||||
/// <param name="tenantId">租户</param>
|
/// <param name="tenantId">租户</param>
|
||||||
/// <param name="userId">用户</param>
|
/// <param name="userId">用户</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static TenantUser FindByTenantIdAndUserId(Int32 tenantId, Int32 userId)
|
public static TenantUser? FindByTenantIdAndUserId(Int32 tenantId, Int32 userId)
|
||||||
{
|
{
|
||||||
if (tenantId < 0) return null;
|
if (tenantId < 0) return null;
|
||||||
if (userId < 0) return null;
|
if (userId < 0) return null;
|
||||||
|
@ -255,6 +255,19 @@ public partial class TenantUser : ITenantUser, IEntity<ITenantUser>
|
||||||
return Find(_.TenantId == tenantId & _.UserId == userId);
|
return Find(_.TenantId == tenantId & _.UserId == userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>根据租户查找</summary>
|
||||||
|
/// <param name="tenantId">租户</param>
|
||||||
|
/// <returns>实体列表</returns>
|
||||||
|
public static IList<TenantUser> FindAllByTenantId(Int32 tenantId)
|
||||||
|
{
|
||||||
|
if (tenantId < 0) return [];
|
||||||
|
|
||||||
|
// 实体缓存
|
||||||
|
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.TenantId == tenantId);
|
||||||
|
|
||||||
|
return FindAll(_.TenantId == tenantId);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>根据用户查找</summary>
|
/// <summary>根据用户查找</summary>
|
||||||
/// <param name="userId">用户</param>
|
/// <param name="userId">用户</param>
|
||||||
/// <returns>实体列表</returns>
|
/// <returns>实体列表</returns>
|
||||||
|
|
|
@ -371,7 +371,7 @@ public partial class Menu : IMenu, IEntity<IMenu>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Menu FindByID(Int32 id)
|
public static Menu? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -401,7 +401,7 @@ public partial class Menu : IMenu, IEntity<IMenu>
|
||||||
/// <param name="parentId">父编号</param>
|
/// <param name="parentId">父编号</param>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Menu FindByParentIDAndName(Int32 parentId, String name)
|
public static Menu? FindByParentIDAndName(Int32 parentId, String name)
|
||||||
{
|
{
|
||||||
if (parentId < 0) return null;
|
if (parentId < 0) return null;
|
||||||
if (name.IsNullOrEmpty()) return null;
|
if (name.IsNullOrEmpty()) return null;
|
||||||
|
@ -411,6 +411,19 @@ public partial class Menu : IMenu, IEntity<IMenu>
|
||||||
|
|
||||||
return Find(_.ParentID == parentId & _.Name == name);
|
return Find(_.ParentID == parentId & _.Name == name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>根据父编号查找</summary>
|
||||||
|
/// <param name="parentId">父编号</param>
|
||||||
|
/// <returns>实体列表</returns>
|
||||||
|
public static IList<Menu> FindAllByParentID(Int32 parentId)
|
||||||
|
{
|
||||||
|
if (parentId < 0) return [];
|
||||||
|
|
||||||
|
// 实体缓存
|
||||||
|
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ParentID == parentId);
|
||||||
|
|
||||||
|
return FindAll(_.ParentID == parentId);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 字段名
|
#region 字段名
|
||||||
|
|
|
@ -304,7 +304,7 @@ public partial class Role : IRole, IEntity<IRole>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Role FindByID(Int32 id)
|
public static Role? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ public partial class Role : IRole, IEntity<IRole>
|
||||||
/// <summary>根据名称查找</summary>
|
/// <summary>根据名称查找</summary>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Role FindByName(String name)
|
public static Role? FindByName(String name)
|
||||||
{
|
{
|
||||||
if (name.IsNullOrEmpty()) return null;
|
if (name.IsNullOrEmpty()) return null;
|
||||||
|
|
||||||
|
|
|
@ -379,7 +379,7 @@ public partial class Department : IDepartment, IEntity<IDepartment>
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Department FindByID(Int32 id)
|
public static Department? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ public partial class Log
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static Log FindByID(Int64 id)
|
public static Log? FindByID(Int64 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
|
|
@ -445,7 +445,7 @@ public partial class User
|
||||||
/// <summary>根据编号查找</summary>
|
/// <summary>根据编号查找</summary>
|
||||||
/// <param name="id">编号</param>
|
/// <param name="id">编号</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static User FindByID(Int32 id)
|
public static User? FindByID(Int32 id)
|
||||||
{
|
{
|
||||||
if (id < 0) return null;
|
if (id < 0) return null;
|
||||||
|
|
||||||
|
@ -461,7 +461,7 @@ public partial class User
|
||||||
/// <summary>根据名称查找</summary>
|
/// <summary>根据名称查找</summary>
|
||||||
/// <param name="name">名称</param>
|
/// <param name="name">名称</param>
|
||||||
/// <returns>实体对象</returns>
|
/// <returns>实体对象</returns>
|
||||||
public static User FindByName(String name)
|
public static User? FindByName(String name)
|
||||||
{
|
{
|
||||||
if (name.IsNullOrEmpty()) return null;
|
if (name.IsNullOrEmpty()) return null;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue