diff --git a/XCode/DataAccessLayer/MetaData/IMetaData.cs b/XCode/DataAccessLayer/MetaData/IMetaData.cs
index f51b658c5..deed5ec47 100644
--- a/XCode/DataAccessLayer/MetaData/IMetaData.cs
+++ b/XCode/DataAccessLayer/MetaData/IMetaData.cs
@@ -1,50 +1,47 @@
-using System;
-using System.Collections.Generic;
-using NewLife;
+using NewLife;
-namespace XCode.DataAccessLayer
+namespace XCode.DataAccessLayer;
+
+/// 数据库元数据接口
+public interface IMetaData : IDisposable2
{
- /// 数据库元数据接口
- public interface IMetaData : IDisposable2
- {
- #region 属性
- /// 数据库
- IDatabase Database { get; }
-
- /// 所有元数据集合
- ICollection MetaDataCollections { get; }
-
- /// 保留关键字
- ICollection ReservedWords { get; }
- #endregion
-
- #region 构架
- /// 取得表模型,正向工程
- ///
- IList GetTables();
-
- ///
- /// 取得所有表名
- ///
- ///
- IList GetTableNames();
-
- /// 设置表模型,检查数据表是否匹配表模型,反向工程
- /// 设置
- ///
- void SetTables(Migration setting, params IDataTable[] tables);
-
- /// 获取数据定义语句
- /// 数据定义模式
- /// 其它信息
- /// 数据定义语句
- String? GetSchemaSQL(DDLSchema schema, params Object?[] values);
-
- /// 设置数据定义模式
- /// 数据定义模式
- /// 其它信息
- ///
- Object? SetSchema(DDLSchema schema, params Object?[] values);
- #endregion
- }
+ #region 属性
+ /// 数据库
+ IDatabase Database { get; }
+
+ /// 所有元数据集合
+ ICollection MetaDataCollections { get; }
+
+ /// 保留关键字
+ ICollection ReservedWords { get; }
+ #endregion
+
+ #region 构架
+ /// 取得表模型,正向工程
+ ///
+ IList GetTables();
+
+ ///
+ /// 取得所有表名
+ ///
+ ///
+ IList GetTableNames();
+
+ /// 设置表模型,检查数据表是否匹配表模型,反向工程
+ /// 设置
+ ///
+ void SetTables(Migration setting, params IDataTable[] tables);
+
+ /// 获取数据定义语句
+ /// 数据定义模式
+ /// 其它信息
+ /// 数据定义语句
+ String? GetSchemaSQL(DDLSchema schema, params Object?[] values);
+
+ /// 设置数据定义模式
+ /// 数据定义模式
+ /// 其它信息
+ ///
+ Object? SetSchema(DDLSchema schema, params Object?[] values);
+ #endregion
}
\ No newline at end of file
diff --git a/XCode/Entity/EntityFactory.cs b/XCode/Entity/EntityFactory.cs
index a7f42ac6b..51711823f 100644
--- a/XCode/Entity/EntityFactory.cs
+++ b/XCode/Entity/EntityFactory.cs
@@ -251,19 +251,23 @@ private static void Init(String connName, IList? types, Boolean throwOnErr
// 反向工程检查
if (dal.Db.Migration > Migration.Off)
{
- //var tables = facts.Select(e => e.Table.DataTable).ToArray();
var tables = new List();
foreach (var item in facts)
{
+ // 带有分表策略的实体类不参与反向工程
+ if (item.ShardPolicy != null) continue;
+ if (item.Table.DataTable.Columns.Any(e => e.DataScale.StartsWithIgnoreCase("shard:", "timeShard:"))) continue;
+
// 克隆一份,防止修改
var table = item.Table.DataTable;
table = (table.Clone() as IDataTable)!;
- if (/*table != null &&*/ table.TableName != item.TableName)
+ if (table.TableName != item.TableName)
{
// 表名去掉前缀
var name = item.TableName;
- if (name.Contains(".")) name = name.Substring(".");
+ var p = name.IndexOf('.');
+ if (p > 0) name = name.Substring(p + 1);
table.TableName = name;
}
@@ -276,10 +280,6 @@ private static void Init(String connName, IList? types, Boolean throwOnErr
// 实体类初始化数据
foreach (var item in facts)
{
- //if (item.Default is EntityBase entity)
- //{
- // entity.InitData();
- //}
item.Session.InitData();
if (span != null) span.Value++;