- 优化 IUpdateJoin AsTable 同时对多表名设置;

This commit is contained in:
2881099 2023-10-24 12:52:09 +08:00
parent 632c5cabf4
commit 09225ffd12
5 changed files with 18 additions and 18 deletions

View File

@ -559,7 +559,7 @@ namespace base_entity
//.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5") //.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5")
//.UseQuoteSqlName(false) //.UseQuoteSqlName(false)
//.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true") .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=3;AllowLoadLocalInfile=true")
//.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true")
@ -600,6 +600,12 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value); BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion #endregion
var updatejoin031sql = fsql.Update<User1>()
.Join<UserGroup>((a, b) => a.GroupId == b.Id)
.AsTable("t1", "t2")
.Set((a, b) => b.GroupName == a.Username + "b.groupname")
.ToSql();
fsql.CodeFirst.Entity<B11>(e => fsql.CodeFirst.Entity<B11>(e =>
{ {
e.Help().Navigate(b => b.a, nameof(B11.Id)); e.Help().Navigate(b => b.a, nameof(B11.Id));
@ -618,11 +624,6 @@ namespace base_entity
fsql.GlobalFilter.Apply<User1>("test01", a => a.IsDeleted == false); fsql.GlobalFilter.Apply<User1>("test01", a => a.IsDeleted == false);
var updatejoin031sql = fsql.Update<User1>()
.Join<UserGroup>((a, b) => a.GroupId == b.Id)
.Set((a, b) => b.GroupName == a.Username + "b.groupname")
.ToSql();
fsql.UseJsonMap(); fsql.UseJsonMap();
fsql.Select<MiDevice>().Where(a => a.FormLocking == null).Count(); fsql.Select<MiDevice>().Where(a => a.FormLocking == null).Count();

View File

@ -800,14 +800,5 @@
<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>

View File

@ -3412,11 +3412,12 @@
<param name="name">零个或多个过滤器名字</param> <param name="name">零个或多个过滤器名字</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.IUpdateJoin`2.AsTable(System.String)"> <member name="M:FreeSql.IUpdateJoin`2.AsTable(System.String,System.String)">
<summary> <summary>
设置表名 设置表名
</summary> </summary>
<param name="tableName"></param> <param name="tableName"></param>
<param name="joinTableName"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSql.IUpdateJoin`2.ToSql"> <member name="M:FreeSql.IUpdateJoin`2.ToSql">

View File

@ -106,8 +106,9 @@ namespace FreeSql
/// 设置表名 /// 设置表名
/// </summary> /// </summary>
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="joinTableName"></param>
/// <returns></returns> /// <returns></returns>
IUpdateJoin<T1, T2> AsTable(string tableName); IUpdateJoin<T1, T2> AsTable(string tableName, string joinTableName);
/// <summary> /// <summary>
/// 返回即将执行的SQL语句 /// 返回即将执行的SQL语句
/// </summary> /// </summary>

View File

@ -98,9 +98,15 @@ namespace FreeSql.Internal.CommonProvider
} }
#region proxy IUpdate #region proxy IUpdate
public IUpdateJoin<T1, T2> AsTable(string tableName) public IUpdateJoin<T1, T2> AsTable(string tableName, string joinTableName)
{ {
_update.AsTable(tableName); _update.AsTable(tableName);
_query2Provider._tableRules.Clear();
_query2Provider._tableRules.Add((t, old) =>
{
if (t == typeof(T2)) return joinTableName;
return old;
});
return this; return this;
} }
public IUpdateJoin<T1, T2> WithConnection(DbConnection connection) public IUpdateJoin<T1, T2> WithConnection(DbConnection connection)