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)