diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 2acb6679..5ca74890 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -130,13 +130,6 @@
清空状态数据
-
-
- 根据 lambda 条件删除数据
-
-
-
-
添加
@@ -527,14 +520,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs
index 5a824785..40d64009 100644
--- a/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Dameng/Curd/DamengSelectTest.cs
@@ -937,6 +937,8 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
public void AsTable()
{
g.dameng.CodeFirst.SyncStructure(typeof(Topic), "TB_TOPIC");
+ g.dameng.CodeFirst.SyncStructure(typeof(Topic), "TB_TOPIC");
+ g.dameng.CodeFirst.SyncStructure(typeof(Topic), "TB_TOPIC", isForceSync: true);
var listt = select.AsTable((a, b) => "(select * from tb_topic where clicks > 10)").Page(1, 10).ToList();
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 36068d41..91e5723b 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -3065,13 +3065,14 @@
-
+
同步实体类型到数据库(指定表名)
注意:生产环境中谨慎使用
实体类型
指定表名对比
+ 强制同步结构,无视缓存每次都同步
diff --git a/FreeSql/Interface/ICodeFirst.cs b/FreeSql/Interface/ICodeFirst.cs
index 02393445..8aa20684 100644
--- a/FreeSql/Interface/ICodeFirst.cs
+++ b/FreeSql/Interface/ICodeFirst.cs
@@ -80,7 +80,8 @@ namespace FreeSql
///
/// 实体类型
/// 指定表名对比
- void SyncStructure(Type entityType, string tableName);
+ /// 强制同步结构,无视缓存每次都同步
+ void SyncStructure(Type entityType, string tableName, bool isForceSync = false);
///
/// 根据 System.Type 获取数据库信息
diff --git a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs
index e2e4cdad..bff2baa9 100644
--- a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs
+++ b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs
@@ -69,7 +69,7 @@ namespace FreeSql.Internal.CommonProvider
static object syncStructureLock = new object();
object _dicSycedLock = new object();
- ConcurrentDictionary> _dicSynced = new ConcurrentDictionary>();
+ public ConcurrentDictionary> _dicSynced = new ConcurrentDictionary>();
internal ConcurrentDictionary _dicSycedGetOrAdd(Type entityType)
{
if (_dicSynced.TryGetValue(entityType, out var trydic) == false)
@@ -85,8 +85,12 @@ namespace FreeSql.Internal.CommonProvider
this.SyncStructure(new TypeAndName(typeof(TEntity), ""));
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)));
+ public void SyncStructure(Type entityType, string tableName, bool isForceSync)
+ {
+ tableName = GetTableNameLowerOrUpper(tableName);
+ if (isForceSync && _dicSynced.TryGetValue(entityType, out var dic)) dic.TryRemove(tableName, out var old);
+ this.SyncStructure(new TypeAndName(entityType, tableName));
+ }
protected void SyncStructure(params TypeAndName[] objects)
{
if (objects == null) return;