为 InsertOrUpdateDictImpl 增加 WhereIdentityPrimary

This commit is contained in:
hyzx86 2023-06-07 19:23:48 +08:00
parent 181fb90ef6
commit 695251fc88
2 changed files with 33 additions and 3 deletions

View File

@ -733,6 +733,15 @@
<param name="modelBuilder"></param> <param name="modelBuilder"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:FreeSqlDbContextExtensions.ApplyConfigurationsFromAssembly(FreeSql.ICodeFirst,System.Reflection.Assembly,System.Func{System.Type,System.Boolean})">
<summary>
根据Assembly扫描所有继承IEntityTypeConfiguration&lt;T&gt;的配置类
</summary>
<param name="codeFirst"></param>
<param name="assembly"></param>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)"> <member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
<summary> <summary>
创建普通数据上下文档对象 创建普通数据上下文档对象
@ -791,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>

View File

@ -1086,11 +1086,17 @@ SELECT ");
} }
return pks.ToArray(); return pks.ToArray();
} }
public static void SetTablePrimary(TableInfo table, params string[] primarys)
public static void SetTablePrimary(TableInfo table, bool isIdenity, params string[] primarys)
{ {
foreach (var primary in primarys) foreach (var primary in primarys)
{ {
if (table.ColumnsByCs.TryGetValue(string.Concat(primary), out var col)) col.Attribute.IsPrimary = true; if (table.ColumnsByCs.TryGetValue(string.Concat(primary), out var col))
{
col.Attribute.IsPrimary = true;
if (isIdenity)
col.Attribute.IsIdentity = true;
}
else throw new Exception(CoreStrings.GetPrimarys_ParameterError_IsNotDictKey(primary)); else throw new Exception(CoreStrings.GetPrimarys_ParameterError_IsNotDictKey(primary));
} }
table.Primarys = table.Columns.Where(a => a.Value.Attribute.IsPrimary).Select(a => a.Value).ToArray(); table.Primarys = table.Columns.Where(a => a.Value.Attribute.IsPrimary).Select(a => a.Value).ToArray();
@ -1172,7 +1178,13 @@ SELECT ");
public InsertOrUpdateDictImpl WherePrimary(params string[] primarys) public InsertOrUpdateDictImpl WherePrimary(params string[] primarys)
{ {
UpdateDictImpl.SetTablePrimary(_insertOrUpdateProvider._table, primarys); UpdateDictImpl.SetTablePrimary(_insertOrUpdateProvider._table, false, primarys);
_insertOrUpdateProvider._tempPrimarys = _insertOrUpdateProvider._table.Primarys;
return this;
}
public InsertOrUpdateDictImpl WhereIdentityPrimary(params string[] primarys)
{
UpdateDictImpl.SetTablePrimary(_insertOrUpdateProvider._table, true, primarys);
_insertOrUpdateProvider._tempPrimarys = _insertOrUpdateProvider._table.Primarys; _insertOrUpdateProvider._tempPrimarys = _insertOrUpdateProvider._table.Primarys;
return this; return this;
} }