Skip to content

Commit f35fc72

Browse files
committed
ZeroDbContext.LoadSchemaFromDatabase("table1")
1 parent 8627f62 commit f35fc72

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

Extensions/FreeSql.Extensions.ZeroEntity/ZeroDbContext.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,23 +264,24 @@ static List<ZeroTableInfo> ValidateSchemaToInfoInternal(IFreeSql orm, IEnumerabl
264264
}
265265

266266
/// <summary>
267-
/// 从数据库中加载 TableDescriptor 描述<para></para>
267+
/// 从数据库中加载<para></para>
268268
/// - 不支持 Navigates<para></para>
269269
/// - 不支持 Indexes IndexMethod<para></para>
270270
/// - 暂支持 SqlServer/MySql decimal(10,2)(其他数据库需实现对应 IDbFirst)
271271
/// </summary>
272-
static TableDescriptor LoadTableDescriptor(IFreeSql orm, string tableName)
272+
public TableDescriptor LoadSchemaFromDatabase(string tableName)
273273
{
274-
var dbinfo = orm.DbFirst.GetTableByName(tableName, true);
274+
if (_tables.Any(a => string.Compare(a.DbName, tableName, true) == 0)) return;
275+
var dbinfo = _orm.DbFirst.GetTableByName(tableName, true);
275276
if (dbinfo == null) throw new Exception($"表“{tableName}”不存在");
276-
var tb = new TableDescriptor
277+
var schema = new TableDescriptor
277278
{
278279
Comment = dbinfo.Comment,
279280
DbName = dbinfo.Name,
280281
Name = dbinfo.Name,
281282
DisableSyncStructure = false,
282283
};
283-
tb.Columns.AddRange(dbinfo.Columns.Select(a => new TableDescriptor.ColumnDescriptor
284+
schema.Columns.AddRange(dbinfo.Columns.Select(a => new TableDescriptor.ColumnDescriptor
284285
{
285286
Name = a.Name,
286287
DbType = a.DbTypeText,
@@ -296,13 +297,14 @@ static TableDescriptor LoadTableDescriptor(IFreeSql orm, string tableName)
296297
Scale = a.Scale,
297298
Comment = a.Comment,
298299
}));
299-
tb.Indexes.AddRange(dbinfo.Indexes.Select(a => new TableDescriptor.IndexDescriptor
300+
schema.Indexes.AddRange(dbinfo.Indexes.Select(a => new TableDescriptor.IndexDescriptor
300301
{
301302
Name = a.Name,
302303
IsUnique = a.IsUnique,
303304
Fields = string.Join(",", a.Columns.Select(b => b.Column)),
304305
}));
305-
return tb;
306+
_tables.AddRange(ValidateSchemaToInfoInternal(_orm, new[] { schema }));
307+
return schema;
306308
}
307309

308310
public ZeroDbContext WithTransaction(DbTransaction value)

0 commit comments

Comments
 (0)