mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 优化 ISelect<T1, T2> 对象 .LeftJoin<T2> 表别名;#1348
This commit is contained in:
parent
77d2a436d6
commit
cc89a6c685
@ -487,10 +487,38 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
var dkdksql = fsql.Select<User1>().WithLock().From<UserGroup>()
|
||||||
|
.InnerJoin<UserGroup>((user, usergroup) => user.GroupId == usergroup.Id && usergroup.GroupName == "xxx")
|
||||||
|
.ToSql();
|
||||||
|
|
||||||
//Func<string> getName1 = () => "xxx";
|
//Func<string> getName1 = () => "xxx";
|
||||||
//fsql.GlobalFilter.Apply<User1>("fil1", a => a.Nickname == getName1());
|
//fsql.GlobalFilter.Apply<User1>("fil1", a => a.Nickname == getName1());
|
||||||
//var gnsql2 = fsql.Select<User1>().ToSql();
|
//var gnsql2 = fsql.Select<User1>().ToSql();
|
||||||
|
|
||||||
|
using (var ctx9 = fsql.CreateDbContext())
|
||||||
|
{
|
||||||
|
//var uset = ctx9.Set<UserGroup>();
|
||||||
|
//var item = new UserGroup
|
||||||
|
//{
|
||||||
|
// GroupName = "group1"
|
||||||
|
//};
|
||||||
|
//uset.Add(item);
|
||||||
|
//item.GroupName = "group1_2";
|
||||||
|
//uset.Update(item);
|
||||||
|
var uset = ctx9.Set<User1>();
|
||||||
|
var item = new User1
|
||||||
|
{
|
||||||
|
Nickname = "nick1",
|
||||||
|
Username = "user1"
|
||||||
|
};
|
||||||
|
uset.Add(item);
|
||||||
|
item.Nickname = "nick1_2";
|
||||||
|
item.Username = "user1_2";
|
||||||
|
uset.Update(item);
|
||||||
|
|
||||||
|
ctx9.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
var strs = new string[] { "a", "b", "c" };
|
var strs = new string[] { "a", "b", "c" };
|
||||||
var strssql1 = fsql.Select<User1>().Where(a => strs.Any(b => b == a.Nickname)).ToSql();
|
var strssql1 = fsql.Select<User1>().Where(a => strs.Any(b => b == a.Nickname)).ToSql();
|
||||||
var strssql2 = fsql.Select<User1>().Where(a => strs.Any(b => a.Nickname.Contains(b))).ToSql();
|
var strssql2 = fsql.Select<User1>().Where(a => strs.Any(b => a.Nickname.Contains(b))).ToSql();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFrameworks>netcoreapp3.1;net60</TargetFrameworks>
|
<TargetFrameworks>net60</TargetFrameworks>
|
||||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<PackAsTool>true</PackAsTool>
|
<PackAsTool>true</PackAsTool>
|
||||||
|
@ -800,5 +800,14 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||||
|
<summary>
|
||||||
|
批量注入 Repository,可以参考代码自行调整
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="globalDataFilter"></param>
|
||||||
|
<param name="assemblies"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -615,18 +615,21 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
{
|
{
|
||||||
if (exp == null) return this as TSelect;
|
if (exp == null) return this as TSelect;
|
||||||
_tables[0].Parameter = exp.Parameters[0];
|
_tables[0].Parameter = exp.Parameters[0];
|
||||||
|
if (_tables.Count > 1 && _tables[1].Table.Type == typeof(T2)) _tables[1].Parameter = exp.Parameters[1];
|
||||||
return this.InternalJoin(exp?.Body, SelectTableInfoType.LeftJoin);
|
return this.InternalJoin(exp?.Body, SelectTableInfoType.LeftJoin);
|
||||||
}
|
}
|
||||||
public TSelect InnerJoin<T2>(Expression<Func<T1, T2, bool>> exp)
|
public TSelect InnerJoin<T2>(Expression<Func<T1, T2, bool>> exp)
|
||||||
{
|
{
|
||||||
if (exp == null) return this as TSelect;
|
if (exp == null) return this as TSelect;
|
||||||
_tables[0].Parameter = exp.Parameters[0];
|
_tables[0].Parameter = exp.Parameters[0];
|
||||||
|
if (_tables.Count > 1 && _tables[1].Table.Type == typeof(T2)) _tables[1].Parameter = exp.Parameters[1];
|
||||||
return this.InternalJoin(exp?.Body, SelectTableInfoType.InnerJoin);
|
return this.InternalJoin(exp?.Body, SelectTableInfoType.InnerJoin);
|
||||||
}
|
}
|
||||||
public TSelect RightJoin<T2>(Expression<Func<T1, T2, bool>> exp)
|
public TSelect RightJoin<T2>(Expression<Func<T1, T2, bool>> exp)
|
||||||
{
|
{
|
||||||
if (exp == null) return this as TSelect;
|
if (exp == null) return this as TSelect;
|
||||||
_tables[0].Parameter = exp.Parameters[0];
|
_tables[0].Parameter = exp.Parameters[0];
|
||||||
|
if (_tables.Count > 1 && _tables[1].Table.Type == typeof(T2)) _tables[1].Parameter = exp.Parameters[1];
|
||||||
return this.InternalJoin(exp?.Body, SelectTableInfoType.RightJoin);
|
return this.InternalJoin(exp?.Body, SelectTableInfoType.RightJoin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user