From 74f8700c218c39fae99a08d54d55c009ba006bbe Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Tue, 7 Apr 2020 11:25:13 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=B0=83=E6=95=B4=20SyncStructure=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E4=B8=BA=20void?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 16 ++++++++++++++++ FreeSql/FreeSql.xml | 3 --- FreeSql/Interface/ICodeFirst.cs | 9 +++------ .../CommonProvider/CodeFirstProvider.cs | 18 +++++++++--------- 4 files changed, 28 insertions(+), 18 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 63db6c75..eacd506b 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -121,6 +121,13 @@ 清空状态数据 + + + 根据 lambda 条件删除数据 + + + + 添加 @@ -215,6 +222,15 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + 注意:IFreeSql 属于顶级对象,事务无法自动传递。 diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 13c418f1..83ccee42 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2763,14 +2763,12 @@ 同步实体类型到数据库 - 同步实体类型集合到数据库 - @@ -2778,7 +2776,6 @@ 实体类型 指定表名对比 - diff --git a/FreeSql/Interface/ICodeFirst.cs b/FreeSql/Interface/ICodeFirst.cs index e242a390..c5cd16e6 100644 --- a/FreeSql/Interface/ICodeFirst.cs +++ b/FreeSql/Interface/ICodeFirst.cs @@ -66,21 +66,18 @@ namespace FreeSql /// 同步实体类型到数据库 /// /// - /// - bool SyncStructure(); + void SyncStructure(); /// /// 同步实体类型集合到数据库 /// /// - /// - bool SyncStructure(params Type[] entityTypes); + void SyncStructure(params Type[] entityTypes); /// /// 同步实体类型到数据库(指定表名) /// /// 实体类型 /// 指定表名对比 - /// - bool SyncStructure(Type entityType, string tableName); + void SyncStructure(Type entityType, string tableName); /// /// 根据 System.Type 获取数据库信息 diff --git a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs index 02c38cff..bd348901 100644 --- a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs +++ b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs @@ -81,18 +81,18 @@ namespace FreeSql.Internal.CommonProvider internal void _dicSycedTryAdd(Type entityType, string tableName = null) => _dicSycedGetOrAdd(entityType).TryAdd(GetTableNameLowerOrUpper(tableName), true); - public bool SyncStructure() => + public void SyncStructure() => this.SyncStructure(new TypeAndName(typeof(TEntity), "")); - public bool SyncStructure(params Type[] entityTypes) => entityTypes == null ? false : - this.SyncStructure(entityTypes.Distinct().Select(a => new TypeAndName(a, "")).ToArray()); - public bool SyncStructure(Type entityType, string tableName) => + public void SyncStructure(params Type[] entityTypes) => + this.SyncStructure(entityTypes?.Distinct().Select(a => new TypeAndName(a, "")).ToArray()); + public void SyncStructure(Type entityType, string tableName) => this.SyncStructure(new TypeAndName(entityType, GetTableNameLowerOrUpper(tableName))); - protected bool SyncStructure(params TypeAndName[] objects) + protected void SyncStructure(params TypeAndName[] objects) { - if (objects == null) return false; + if (objects == null) return; var syncObjects = objects.Where(a => _dicSycedGetOrAdd(a.entityType).ContainsKey(GetTableNameLowerOrUpper(a.tableName)) == false && GetTableByEntity(a.entityType)?.DisableSyncStructure == false) .Select(a => new TypeAndName(a.entityType, GetTableNameLowerOrUpper(a.tableName))).ToArray(); - if (syncObjects.Any() == false) return false; + if (syncObjects.Any() == false) return; var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray()); _orm.Aop.SyncStructureBeforeHandler?.Invoke(this, before); Exception exception = null; @@ -105,11 +105,11 @@ namespace FreeSql.Internal.CommonProvider if (string.IsNullOrEmpty(ddl)) { foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.entityType, syncObject.tableName); - return true; + return; } var affrows = ExecuteDDLStatements(ddl); foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.entityType, syncObject.tableName); - return true; + return; } } catch (Exception ex)