mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 ToList 子查询开启参数化重复参数的 bug;#1205
This commit is contained in:
parent
0efd1bbb1e
commit
6370c599f9
@ -361,10 +361,8 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
fsql.CodeFirst.ConfigEntity<User1>(a =>
|
InitData();
|
||||||
{
|
InitData();
|
||||||
a.Name("FSCHEDULER");
|
|
||||||
});
|
|
||||||
|
|
||||||
var dates = Enumerable.Range(0, 5)
|
var dates = Enumerable.Range(0, 5)
|
||||||
.Select(a => new DateModel { Date = DateTime.Parse("2022-08-01").AddDays(a) })
|
.Select(a => new DateModel { Date = DateTime.Parse("2022-08-01").AddDays(a) })
|
||||||
@ -409,7 +407,6 @@ namespace base_entity
|
|||||||
.InnerJoin((a, b) => a.Id == b.GroupId)
|
.InnerJoin((a, b) => a.Id == b.GroupId)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var anysql01 = fsql.Select<Permission>().Where(a => a.Roles.Any(b => b.Users.Any(c => c.UserName == "admin"))).ToSql();
|
|
||||||
|
|
||||||
var atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
|
var atimpl = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog))
|
||||||
.AsTableImpl;
|
.AsTableImpl;
|
||||||
@ -613,6 +610,8 @@ namespace base_entity
|
|||||||
sql1 = sql1.Replace("INNER JOIN ", "FULL JOIN ");
|
sql1 = sql1.Replace("INNER JOIN ", "FULL JOIN ");
|
||||||
|
|
||||||
var tinc01 = fsql.Select<UserGroup>().IncludeMany(a => a.User1s.Where(b => b.GroupId == a.Id)).ToList();
|
var tinc01 = fsql.Select<UserGroup>().IncludeMany(a => a.User1s.Where(b => b.GroupId == a.Id)).ToList();
|
||||||
|
|
||||||
|
fsql.CodeFirst.IsGenerateCommandParameterWithLambda = true;
|
||||||
var tsub01 = fsql.Select<UserGroup>()
|
var tsub01 = fsql.Select<UserGroup>()
|
||||||
.ToList(a => new
|
.ToList(a => new
|
||||||
{
|
{
|
||||||
@ -1200,6 +1199,16 @@ namespace base_entity
|
|||||||
//fsql.Aop.ConfigEntityProperty += ConfigEntityProperty;
|
//fsql.Aop.ConfigEntityProperty += ConfigEntityProperty;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Console.WriteLine("按任意键结束。。。");
|
||||||
|
Console.ReadKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitData()
|
||||||
|
{
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
using (var uow = BaseEntity.Orm.CreateUnitOfWork())
|
using (var uow = BaseEntity.Orm.CreateUnitOfWork())
|
||||||
@ -1254,31 +1263,26 @@ namespace base_entity
|
|||||||
|
|
||||||
var ug1s2 = UserGroup.Select.Where(a => a.User1s.AsSelect().Any(b => b.Nickname == "x1")).Limit(10).ToList();
|
var ug1s2 = UserGroup.Select.Where(a => a.User1s.AsSelect().Any(b => b.Nickname == "x1")).Limit(10).ToList();
|
||||||
|
|
||||||
//var r1 = new Role();
|
var r1 = new Role();
|
||||||
//r1.Id = "管理员";
|
r1.Id = "管理员";
|
||||||
//await r1.SaveAsync();
|
await r1.SaveAsync();
|
||||||
|
|
||||||
//var r2 = new Role();
|
var r2 = new Role();
|
||||||
//r2.Id = "超级会员";
|
r2.Id = "超级会员";
|
||||||
//await r2.SaveAsync();
|
await r2.SaveAsync();
|
||||||
|
|
||||||
//var ru1 = new RoleUser1();
|
var ru1 = new RoleUser1();
|
||||||
//ru1.User1Id = u1.Id;
|
ru1.User1Id = u1.Id;
|
||||||
//ru1.RoleId = r1.Id;
|
ru1.RoleId = r1.Id;
|
||||||
//await ru1.SaveAsync();
|
await ru1.SaveAsync();
|
||||||
|
|
||||||
//ru1.RoleId = r2.Id;
|
ru1.RoleId = r2.Id;
|
||||||
//await ru1.SaveAsync();
|
await ru1.SaveAsync();
|
||||||
|
|
||||||
var u1roles = await User1.Select.IncludeMany(a => a.Roles).ToListAsync();
|
var u1roles = await User1.Select.IncludeMany(a => a.Roles).ToListAsync();
|
||||||
var u1roles2 = await User1.Select.Where(a => a.Roles.AsSelect().Any(b => b.Id == "xx")).ToListAsync();
|
var u1roles2 = await User1.Select.Where(a => a.Roles.AsSelect().Any(b => b.Id == "xx")).ToListAsync();
|
||||||
|
|
||||||
}).Wait();
|
}).Wait();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Console.WriteLine("按任意键结束。。。");
|
|
||||||
Console.ReadKey();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<T1> ToListIgnore<T1>(this ISelect<T1> that, Expression<Func<T1, object>> selector)
|
public static List<T1> ToListIgnore<T1>(this ISelect<T1> that, Expression<Func<T1, object>> selector)
|
||||||
@ -1325,118 +1329,4 @@ namespace base_entity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Table(Name = "t_user")]
|
|
||||||
public partial class User
|
|
||||||
{
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public string User_id { get; set; }
|
|
||||||
|
|
||||||
[Column(IsNullable = false)]
|
|
||||||
public string UserName { get; set; }
|
|
||||||
|
|
||||||
[Column(IsNullable = false)]
|
|
||||||
public string UserPassword { get; set; }
|
|
||||||
|
|
||||||
public DateTime? CreateDate { get; set; }
|
|
||||||
|
|
||||||
public DateTime? ModifyDate { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region 外键 => 导航属性,ManyToMany
|
|
||||||
|
|
||||||
[Navigate(ManyToMany = typeof(user_role))]
|
|
||||||
public List<Role> Roles { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
|
|
||||||
[Table(Name = "t_role")]
|
|
||||||
public partial class Role
|
|
||||||
{
|
|
||||||
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public int ID { get; set; }
|
|
||||||
|
|
||||||
[Column(IsNullable = false)]
|
|
||||||
public string Rolename { get; set; }
|
|
||||||
|
|
||||||
[Column(DbType = "NTEXT")]
|
|
||||||
public string Description { get; set; }
|
|
||||||
|
|
||||||
#region 外键 => 导航属性,ManyToMany
|
|
||||||
/// <summary>
|
|
||||||
/// 关联的用户集合
|
|
||||||
/// </summary>
|
|
||||||
[Navigate(ManyToMany = typeof(user_role))]
|
|
||||||
public List<User> Users { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 关联的权限集合
|
|
||||||
/// </summary>
|
|
||||||
[Navigate(ManyToMany = typeof(role_permission))]
|
|
||||||
public List<Permission> Permissions { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[Table(Name = "t_permission")]
|
|
||||||
public partial class Permission
|
|
||||||
{
|
|
||||||
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public int ID { get; set; }
|
|
||||||
public string PermissionName { get; set; }
|
|
||||||
|
|
||||||
[Column(DbType = "NTEXT")]
|
|
||||||
public string Description { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region 外键 => 导航属性,ManyToMany
|
|
||||||
|
|
||||||
[Navigate(ManyToMany = typeof(role_permission))]
|
|
||||||
public List<Role> Roles { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[Table(Name = "user_role")]
|
|
||||||
public partial class user_role
|
|
||||||
{
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public string User_id { get; set; }
|
|
||||||
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public int Role_id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region 外键 => 导航属性,ManyToMany
|
|
||||||
[Navigate(nameof(User_id))]
|
|
||||||
public User user { get; set; }
|
|
||||||
[Navigate(nameof(Role_id))]
|
|
||||||
public Role role { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
|
|
||||||
[Table(Name = "role_permission")]
|
|
||||||
public partial class role_permission
|
|
||||||
{
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public int Role_id { get; set; }
|
|
||||||
|
|
||||||
[Column(IsPrimary = true)]
|
|
||||||
public int Permission_id { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region 外键 => 导航属性,ManyToMany
|
|
||||||
[Navigate(nameof(Role_id))]
|
|
||||||
public Role role { get; set; }
|
|
||||||
[Navigate(nameof(Permission_id))]
|
|
||||||
public Permission permission { get; set; }
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -79,16 +79,6 @@
|
|||||||
软删除
|
软删除
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:base_entity.Role.Users">
|
|
||||||
<summary>
|
|
||||||
关联的用户集合
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:base_entity.Role.Permissions">
|
|
||||||
<summary>
|
|
||||||
关联的权限集合
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:EMSServerModel.Model.Role">
|
<member name="T:EMSServerModel.Model.Role">
|
||||||
<summary>
|
<summary>
|
||||||
角色表
|
角色表
|
||||||
|
@ -322,7 +322,14 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
internal Select0Provider SetSameSelectPendingShareData(List<NativeTuple<string, DbParameter[], ReadAnonymousTypeOtherInfo>> data)
|
internal Select0Provider SetSameSelectPendingShareData(List<NativeTuple<string, DbParameter[], ReadAnonymousTypeOtherInfo>> data)
|
||||||
{
|
{
|
||||||
_SameSelectPendingShareData = data;
|
_SameSelectPendingShareData = data;
|
||||||
_SameSelectPendingShareData?.ForEach(a => _params.AddRange(a?.Item2 ?? new DbParameter[0]));
|
//_SameSelectPendingShareData?.ForEach(a => _params.AddRange(a?.Item2 ?? new DbParameter[0])); #1205 SqlServer BUG 参数化重复
|
||||||
|
if (_SameSelectPendingShareData?.Any() == true)
|
||||||
|
{
|
||||||
|
var last = _SameSelectPendingShareData.Last();
|
||||||
|
if (last == null && _SameSelectPendingShareData.Count > 1) last = _SameSelectPendingShareData[_SameSelectPendingShareData.Count - 2];
|
||||||
|
if (last != null)
|
||||||
|
_params.AddRange(last.Item2 ?? new DbParameter[0]);
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
internal bool SameSelectPending(ref string sql, ReadAnonymousTypeOtherInfo csspsod)
|
internal bool SameSelectPending(ref string sql, ReadAnonymousTypeOtherInfo csspsod)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user