diff --git a/FreeSql/Interface/ICodeFirst.cs b/FreeSql/Interface/ICodeFirst.cs index 8aa20684b..8aa129c5d 100644 --- a/FreeSql/Interface/ICodeFirst.cs +++ b/FreeSql/Interface/ICodeFirst.cs @@ -62,12 +62,13 @@ public interface ICodeFirst /// 指定表名对比 /// string GetComparisonDDLStatements(Type entityType, string tableName); - /// - /// 同步实体类型到数据库 - /// 注意:生产环境中谨慎使用 - /// - /// - void SyncStructure(); + string GetComparisonDDLStatements(TableInfo tableSchema, string tableName); + /// + /// 同步实体类型到数据库 + /// 注意:生产环境中谨慎使用 + /// + /// + void SyncStructure(); /// /// 同步实体类型集合到数据库 /// 注意:生产环境中谨慎使用 @@ -82,13 +83,14 @@ public interface ICodeFirst /// 指定表名对比 /// 强制同步结构,无视缓存每次都同步 void SyncStructure(Type entityType, string tableName, bool isForceSync = false); + void SyncStructure(TableInfo tableSchema, string tableName, bool isForceSync = false); - /// - /// 根据 System.Type 获取数据库信息 - /// - /// - /// - DbInfoResult GetDbInfo(Type type); + /// + /// 根据 System.Type 获取数据库信息 + /// + /// + /// + DbInfoResult GetDbInfo(Type type); /// /// FreeSql FluentApi 配置实体,方法名与特性相同 /// diff --git a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs index 034390751..827658b65 100644 --- a/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs +++ b/FreeSql/Internal/CommonProvider/CodeFirstProvider.cs @@ -50,19 +50,21 @@ protected string GetTableNameLowerOrUpper(string tableName) return tableName; } public string GetComparisonDDLStatements() => - this.GetComparisonDDLStatements(new TypeAndName(typeof(TEntity), "")); + this.GetComparisonDDLStatements(new TypeSchemaAndName(GetTableByEntity(typeof(TEntity)), "")); public string GetComparisonDDLStatements(params Type[] entityTypes) => entityTypes == null ? null : - this.GetComparisonDDLStatements(entityTypes.Distinct().Select(a => new TypeAndName(a, "")).ToArray()); + this.GetComparisonDDLStatements(entityTypes.Distinct().Select(a => new TypeSchemaAndName(GetTableByEntity(a), "")).ToArray()); public string GetComparisonDDLStatements(Type entityType, string tableName) => - this.GetComparisonDDLStatements(new TypeAndName(entityType, GetTableNameLowerOrUpper(tableName))); - protected abstract string GetComparisonDDLStatements(params TypeAndName[] objects); - public class TypeAndName + this.GetComparisonDDLStatements(new TypeSchemaAndName(GetTableByEntity(entityType), GetTableNameLowerOrUpper(tableName))); + public string GetComparisonDDLStatements(TableInfo tableSchema, string tableName) => + this.GetComparisonDDLStatements(new TypeSchemaAndName(tableSchema, GetTableNameLowerOrUpper(tableName))); + protected abstract string GetComparisonDDLStatements(params TypeSchemaAndName[] objects); + public class TypeSchemaAndName { - public Type entityType { get; } + public TableInfo tableSchema { get; } public string tableName { get; } - public TypeAndName(Type entityType, string tableName) + public TypeSchemaAndName(TableInfo tableSchema, string tableName) { - this.entityType = entityType; + this.tableSchema = tableSchema; this.tableName = tableName; } } @@ -82,24 +84,33 @@ public void _dicSycedTryAdd(Type entityType, string tableName = null) => _dicSycedGetOrAdd(entityType).TryAdd(GetTableNameLowerOrUpper(tableName), true); public void SyncStructure() => - this.SyncStructure(new TypeAndName(typeof(TEntity), "")); + this.SyncStructure(new TypeSchemaAndName(GetTableByEntity(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, bool isForceSync) + this.SyncStructure(entityTypes?.Distinct().Select(a => new TypeSchemaAndName(GetTableByEntity(a), "")).ToArray()); + public void SyncStructure(Type entityType, string tableName, bool isForceSync) => + this.SyncStructure(GetTableByEntity(entityType), tableName, isForceSync); + public void SyncStructure(TableInfo tableSchema, string tableName, bool isForceSync = false) { 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 (isForceSync && tableSchema?.Type != null && _dicSynced.TryGetValue(tableSchema.Type, out var dic)) dic.TryRemove(tableName, out var old); + this.SyncStructure(new TypeSchemaAndName(tableSchema, tableName)); + } + + protected void SyncStructure(params TypeSchemaAndName[] objects) { if (objects == null) return; - var syncObjects = objects.Where(a => a.entityType != null && a.entityType != typeof(object) && _dicSycedGetOrAdd(a.entityType).ContainsKey(GetTableNameLowerOrUpper(a.tableName)) == false && GetTableByEntity(a.entityType)?.DisableSyncStructure == false) - .Select(a => new TypeAndName(a.entityType, GetTableNameLowerOrUpper(a.tableName))) - .Where(a => !(string.IsNullOrEmpty(a.tableName) == true && GetTableByEntity(a.entityType)?.AsTableImpl != null)) + var syncObjects = objects.Where(a => a.tableSchema?.Type != null && + ( + a.tableSchema.Type.Name == "DynamicRepository" && a.tableSchema.Columns.Any() + || + a.tableSchema.Type != typeof(object) && _dicSycedGetOrAdd(a.tableSchema.Type).ContainsKey(GetTableNameLowerOrUpper(a.tableName)) == false + ) && + a.tableSchema?.DisableSyncStructure == false) + .Select(a => new TypeSchemaAndName(a.tableSchema, GetTableNameLowerOrUpper(a.tableName))) + .Where(a => !(string.IsNullOrEmpty(a.tableName) == true && a.tableSchema?.AsTableImpl != null)) .ToArray(); if (syncObjects.Any() == false) return; - var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.entityType).ToArray()); + var before = new Aop.SyncStructureBeforeEventArgs(syncObjects.Select(a => a.tableSchema.Type).ToArray()); _orm.Aop.SyncStructureBeforeHandler?.Invoke(this, before); Exception exception = null; string ddl = null; @@ -110,11 +121,11 @@ protected void SyncStructure(params TypeAndName[] objects) ddl = this.GetComparisonDDLStatements(syncObjects); if (string.IsNullOrEmpty(ddl)) { - foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.entityType, syncObject.tableName); + foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.tableSchema.Type, syncObject.tableName); return; } var affrows = ExecuteDDLStatements(ddl); - foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.entityType, syncObject.tableName); + foreach (var syncObject in syncObjects) _dicSycedTryAdd(syncObject.tableSchema.Type, syncObject.tableName); return; } } diff --git a/Providers/FreeSql.Provider.ClickHouse/ClickHouseCodeFirst.cs b/Providers/FreeSql.Provider.ClickHouse/ClickHouseCodeFirst.cs index b6293849e..e4cf8216e 100644 --- a/Providers/FreeSql.Provider.ClickHouse/ClickHouseCodeFirst.cs +++ b/Providers/FreeSql.Provider.ClickHouse/ClickHouseCodeFirst.cs @@ -85,7 +85,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -100,11 +100,11 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); + var tb = obj.tableSchema; if (tb == null) - throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); + throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); if (tb.Columns.Any() == false) - throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Custom/CustomCodeFirst.cs b/Providers/FreeSql.Provider.Custom/CustomCodeFirst.cs index 20deef317..1dc024c53 100644 --- a/Providers/FreeSql.Provider.Custom/CustomCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/CustomCodeFirst.cs @@ -90,6 +90,6 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}"); + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}"); } } \ No newline at end of file diff --git a/Providers/FreeSql.Provider.Custom/MySql/CustomMySqlCodeFirst.cs b/Providers/FreeSql.Provider.Custom/MySql/CustomMySqlCodeFirst.cs index 0212b3fbe..1ecf43ef4 100644 --- a/Providers/FreeSql.Provider.Custom/MySql/CustomMySqlCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/MySql/CustomMySqlCodeFirst.cs @@ -74,7 +74,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -88,9 +88,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs b/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs index 4877de4bb..19a7f8e0b 100644 --- a/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/Oracle/CustomOracleCodeFirst.cs @@ -74,7 +74,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var userId = (_orm.Ado as CustomOracleAdo)?.UserId; if (string.IsNullOrEmpty(userId)) @@ -90,15 +90,15 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] }; var tboldname = _commonUtils.SplitTableName(tb.DbOldName); //旧表名 if (tboldname?.Length == 1) tboldname = new[] { userId, tboldname[0] }; - var primaryKeyName = (obj.entityType.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; + var primaryKeyName = (obj.tableSchema.Type.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; if (string.IsNullOrEmpty(obj.tableName) == false) { var tbtmpname = _commonUtils.SplitTableName(obj.tableName); diff --git a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs index 2ad1a5d9a..5ade27660 100644 --- a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs @@ -79,7 +79,7 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -96,9 +96,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { "public", tbname[0] }; diff --git a/Providers/FreeSql.Provider.Custom/SqlServer/CustomSqlServerCodeFirst.cs b/Providers/FreeSql.Provider.Custom/SqlServer/CustomSqlServerCodeFirst.cs index ed213e420..33a6525e6 100644 --- a/Providers/FreeSql.Provider.Custom/SqlServer/CustomSqlServerCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/SqlServer/CustomSqlServerCodeFirst.cs @@ -134,7 +134,7 @@ void AddOrUpdateMS_Description(StringBuilder sb, string schema, string table, st , @level2type = 'COLUMN', @level2name = N'{2}' ", schema.Replace("'", "''"), table.Replace("'", "''"), column.Replace("'", "''"), comment?.Replace("'", "''") ?? ""); } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -148,9 +148,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, "dbo", tbname[0] }; if (tbname?.Length == 2) tbname = new[] { database, tbname[0], tbname[1] }; diff --git a/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs b/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs index 2ac88b6e6..73a29ee57 100644 --- a/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs +++ b/Providers/FreeSql.Provider.Dameng/DamengCodeFirst.cs @@ -75,7 +75,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var userId = (_orm.Ado.MasterPool as DamengConnectionPool)?.UserId; if (string.IsNullOrEmpty(userId)) @@ -91,15 +91,15 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] }; var tboldname = _commonUtils.SplitTableName(tb.DbOldName); //旧表名 if (tboldname?.Length == 1) tboldname = new[] { userId, tboldname[0] }; - var primaryKeyName = (obj.entityType.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; + var primaryKeyName = (obj.tableSchema.Type.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; if (string.IsNullOrEmpty(obj.tableName) == false) { var tbtmpname = _commonUtils.SplitTableName(obj.tableName); diff --git a/Providers/FreeSql.Provider.Firebird/FirebirdCodeFirst.cs b/Providers/FreeSql.Provider.Firebird/FirebirdCodeFirst.cs index 4a066cd76..0a2d624a6 100644 --- a/Providers/FreeSql.Provider.Firebird/FirebirdCodeFirst.cs +++ b/Providers/FreeSql.Provider.Firebird/FirebirdCodeFirst.cs @@ -81,16 +81,16 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = tb.DbName; var tboldname = tb.DbOldName; //旧表名 if (string.IsNullOrEmpty(obj.tableName) == false) diff --git a/Providers/FreeSql.Provider.GBase/GBaseCodeFirst.cs b/Providers/FreeSql.Provider.GBase/GBaseCodeFirst.cs index 6ca4d16ed..53c02d105 100644 --- a/Providers/FreeSql.Provider.GBase/GBaseCodeFirst.cs +++ b/Providers/FreeSql.Provider.GBase/GBaseCodeFirst.cs @@ -77,7 +77,7 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -91,9 +91,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, tbname[0] }; diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESCodeFirst.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESCodeFirst.cs index c49700607..44c28eb76 100644 --- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESCodeFirst.cs +++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESCodeFirst.cs @@ -98,7 +98,7 @@ public void InitIsSysV8R3() } } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { InitIsSysV8R3(); var pg_ = _isSysV8R3 == true ? "sys_" : "pg_"; @@ -109,9 +109,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { public_, tbname[0] }; diff --git a/Providers/FreeSql.Provider.MsAccess/MsAccessCodeFirst.cs b/Providers/FreeSql.Provider.MsAccess/MsAccessCodeFirst.cs index ade42a9c6..39b60da2e 100644 --- a/Providers/FreeSql.Provider.MsAccess/MsAccessCodeFirst.cs +++ b/Providers/FreeSql.Provider.MsAccess/MsAccessCodeFirst.cs @@ -72,16 +72,16 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var sbDeclare = new StringBuilder(); foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = tb.DbName; var tboldname = tb.DbOldName; //旧表名 if (string.Compare(tbname, tboldname, true) == 0) tboldname = null; diff --git a/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs b/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs index 12ce42601..ca51bfd1f 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs @@ -86,7 +86,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -100,9 +100,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs index 52fb7a4df..3e52077dd 100644 --- a/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Dameng/OdbcDamengCodeFirst.cs @@ -76,7 +76,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var userId = (_orm.Ado.MasterPool as OdbcDamengConnectionPool)?.UserId; if (string.IsNullOrEmpty(userId)) @@ -92,15 +92,15 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] }; var tboldname = _commonUtils.SplitTableName(tb.DbOldName); //旧表名 if (tboldname?.Length == 1) tboldname = new[] { userId, tboldname[0] }; - var primaryKeyName = (obj.entityType.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; + var primaryKeyName = (obj.tableSchema.Type.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; if (string.IsNullOrEmpty(obj.tableName) == false) { var tbtmpname = _commonUtils.SplitTableName(obj.tableName); diff --git a/Providers/FreeSql.Provider.Odbc/Default/OdbcCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/Default/OdbcCodeFirst.cs index c7f584a8c..6f7c5de5f 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/OdbcCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/OdbcCodeFirst.cs @@ -90,6 +90,6 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}"); + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}"); } } \ No newline at end of file diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESCodeFirst.cs index 954faae54..1d261ffad 100644 --- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESCodeFirst.cs @@ -102,7 +102,7 @@ public void InitIsSysV8R3() } } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { InitIsSysV8R3(); var pg_ = _isSysV8R3 == true ? "sys_" : "pg_"; @@ -113,9 +113,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { public_, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlCodeFirst.cs index d5a54ce48..569b5f8fe 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlCodeFirst.cs @@ -75,7 +75,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -89,9 +89,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs index 12ad0db3e..35fb0fd9b 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/OdbcOracleCodeFirst.cs @@ -76,7 +76,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var userId = (_orm.Ado.MasterPool as OdbcOracleConnectionPool)?.UserId; if (string.IsNullOrEmpty(userId)) @@ -92,15 +92,15 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] }; var tboldname = _commonUtils.SplitTableName(tb.DbOldName); //旧表名 if (tboldname?.Length == 1) tboldname = new[] { userId, tboldname[0] }; - var primaryKeyName = (obj.entityType.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; + var primaryKeyName = (obj.tableSchema.Type.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; if (string.IsNullOrEmpty(obj.tableName) == false) { var tbtmpname = _commonUtils.SplitTableName(obj.tableName); diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs index 12fd8a99a..15cc07503 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs @@ -80,7 +80,7 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -97,9 +97,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { "public", tbname[0] }; diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs index 5a5eef61c..470a30016 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/OdbcSqlServerCodeFirst.cs @@ -135,7 +135,7 @@ void AddOrUpdateMS_Description(StringBuilder sb, string schema, string table, st , @level2type = 'COLUMN', @level2name = N'{2}' ", schema.Replace("'", "''"), table.Replace("'", "''"), column.Replace("'", "''"), comment?.Replace("'", "''") ?? ""); } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -149,9 +149,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, "dbo", tbname[0] }; if (tbname?.Length == 2) tbname = new[] { database, tbname[0], tbname[1] }; diff --git a/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs b/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs index 358b0c190..c788b97da 100644 --- a/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs +++ b/Providers/FreeSql.Provider.Oracle/OracleCodeFirst.cs @@ -111,7 +111,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var userId = (_orm.Ado.MasterPool as OracleConnectionPool)?.UserId; if (string.IsNullOrEmpty(userId)) @@ -127,15 +127,15 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] }; var tboldname = _commonUtils.SplitTableName(tb.DbOldName); //旧表名 if (tboldname?.Length == 1) tboldname = new[] { userId, tboldname[0] }; - var primaryKeyName = (obj.entityType.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; + var primaryKeyName = (obj.tableSchema.Type.GetCustomAttributes(typeof(OraclePrimaryKeyNameAttribute), false)?.FirstOrDefault() as OraclePrimaryKeyNameAttribute)?.Name; if (string.IsNullOrEmpty(obj.tableName) == false) { var tbtmpname = _commonUtils.SplitTableName(obj.tableName); diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs index 8818e4e48..9bcc4f803 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs @@ -130,7 +130,7 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -147,9 +147,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { "public", tbname[0] }; diff --git a/Providers/FreeSql.Provider.QuestDb/QuestDbCodeFirst.cs b/Providers/FreeSql.Provider.QuestDb/QuestDbCodeFirst.cs index b8749b6ff..2bdc9a4b0 100644 --- a/Providers/FreeSql.Provider.QuestDb/QuestDbCodeFirst.cs +++ b/Providers/FreeSql.Provider.QuestDb/QuestDbCodeFirst.cs @@ -79,7 +79,7 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -87,10 +87,10 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); if (tb.Columns.Any() == false) - throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = tb.DbName; var tboldname = tb.DbOldName; if (string.IsNullOrEmpty(obj.tableName) == false) @@ -147,7 +147,7 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object sbalter.Remove(sbalter.Length - 1, 1); //是否存在分表 - foreach (var propety in obj.entityType.GetProperties()) + foreach (var propety in obj.tableSchema.Type.GetProperties()) { var timeAttr = propety.GetCustomAttribute(); if (timeAttr != null) diff --git a/Providers/FreeSql.Provider.ShenTong/ShenTongCodeFirst.cs b/Providers/FreeSql.Provider.ShenTong/ShenTongCodeFirst.cs index 3fd674928..de8b0e01a 100644 --- a/Providers/FreeSql.Provider.ShenTong/ShenTongCodeFirst.cs +++ b/Providers/FreeSql.Provider.ShenTong/ShenTongCodeFirst.cs @@ -86,7 +86,7 @@ CsToDb GetDbInfoNoneArray(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -94,9 +94,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { "PUBLIC", tbname[0] }; diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs index 859c5938f..2077c4f5e 100644 --- a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs +++ b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs @@ -137,7 +137,7 @@ void AddOrUpdateMS_Description(StringBuilder sb, string schema, string table, st , @level2type = 'COLUMN', @level2name = N'{2}' ", schema.Replace("'", "''"), table.Replace("'", "''"), column.Replace("'", "''"), comment?.Replace("'", "''") ?? ""); } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { Object conn = null; string database = null; @@ -151,9 +151,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { database, "dbo", tbname[0] }; if (tbname?.Length == 2) tbname = new[] { database, tbname[0], tbname[1] }; diff --git a/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs b/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs index f332db905..6545bff5e 100644 --- a/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs +++ b/Providers/FreeSql.Provider.Sqlite/SqliteCodeFirst.cs @@ -71,16 +71,16 @@ public override DbInfoResult GetDbInfo(Type type) return null; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var sbDeclare = new StringBuilder(); foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { "main", tbname[0] }; diff --git a/Providers/FreeSql.Provider.Xugu/XuguCodeFirst.cs b/Providers/FreeSql.Provider.Xugu/XuguCodeFirst.cs index 4ecded02a..a47c62dce 100644 --- a/Providers/FreeSql.Provider.Xugu/XuguCodeFirst.cs +++ b/Providers/FreeSql.Provider.Xugu/XuguCodeFirst.cs @@ -129,7 +129,7 @@ internal static string GetXuguSqlTypeFullName(object[] row) sqlType += $"({data_length})"; return sqlType; } - protected override string GetComparisonDDLStatements(params TypeAndName[] objects) + protected override string GetComparisonDDLStatements(params TypeSchemaAndName[] objects) { var sb = new StringBuilder(); var seqcols = new List>(); //序列 @@ -137,9 +137,9 @@ protected override string GetComparisonDDLStatements(params TypeAndName[] object foreach (var obj in objects) { if (sb.Length > 0) sb.Append("\r\n"); - var tb = _commonUtils.GetTableByEntity(obj.entityType); - if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName)); - if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName)); + var tb = obj.tableSchema; + if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.tableSchema.Type.FullName)); + if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.tableSchema.Type.FullName)); var tbname = _commonUtils.SplitTableName(tb.DbName); if (tbname?.Length == 1) tbname = new[] { DefaultSchema, tbname[0] }; diff --git a/Providers/FreeSql.Provider.Xugu/XuguDbFirst.cs b/Providers/FreeSql.Provider.Xugu/XuguDbFirst.cs index 1cce68065..2e9e70699 100644 --- a/Providers/FreeSql.Provider.Xugu/XuguDbFirst.cs +++ b/Providers/FreeSql.Provider.Xugu/XuguDbFirst.cs @@ -384,7 +384,7 @@ from all_INDEXES a var index_id = string.Concat(row[2]); var is_unique = string.Concat(row[3]) == "1"; var is_primary_key = string.Concat(row[4]) == "1"; - var is_clustered = false;//= string.Concat(row[5]) == "1"; + //var is_clustered = false;//= string.Concat(row[5]) == "1"; var is_desc = false;//string.Concat(row[6]) == "1"; //var inkey = string.Concat(row[7]).Split(' '); //var attnum = int.Parse(string.Concat(row[8]));