public override void UpdateDatabaseBeforeUpdateSchema() { base.UpdateDatabaseBeforeUpdateSchema(); if (SequenceGenerator.UseGuidKey) { var classInfo = XpandModuleBase.Dictiorary.GetClassInfo(XpandModuleBase.SequenceObjectType); var dbTable = GetDbTable(classInfo.TableName); if (dbTable != null) { if (SequenceGeneratorHelper.IsMySql()) { throw new NotImplementedException("Set SequenceGenerator.UseGuidKey=false or update the set Oid as key property manually"); } var memberInfo = classInfo.Members.FirstOrDefault(info => info.IsCollection && typeof(ISequenceReleasedObject).IsAssignableFrom(info.CollectionElementType.ClassType)); if (memberInfo != null) { var tableName = memberInfo.CollectionElementType.Table.Name; if (GetDbTable(tableName) != null) { ExecuteNonQueryCommand("drop table " + tableName, false); } } ExecuteNonQueryCommand("alter table " + classInfo.TableName + " drop constraint PK_SequenceObject", false); } } }
public override void UpdateDatabaseBeforeUpdateSchema() { base.UpdateDatabaseBeforeUpdateSchema(); if (SequenceGenerator.UseGuidKey && XpandModuleBase.SequenceObjectType != null) { var classInfo = XafTypesInfo.CastTypeToTypeInfo(XpandModuleBase.SequenceObjectType).QueryXPClassInfo(); var dbTable = GetDbTable(classInfo.TableName); var typeNamePropertyName = nameof(ISequenceObject.TypeName); if (dbTable != null && dbTable.PrimaryKey.Columns.Contains(typeNamePropertyName)) { if (SequenceGeneratorHelper.IsMySql()) { throw new NotImplementedException("Set SequenceGenerator.UseGuidKey=false or update the set Oid as key property manually"); } var memberInfo = classInfo.Members.FirstOrDefault(info => info.IsCollection && typeof(ISequenceReleasedObject).IsAssignableFrom(info.CollectionElementType.ClassType)); if (memberInfo != null) { var tableName = memberInfo.CollectionElementType.Table.Name; if (GetDbTable(tableName) != null) { ExecuteNonQueryCommand("drop table " + tableName, false); } } ExecuteNonQueryCommand(String.Format( CultureInfo.InvariantCulture, "alter table {0} drop constraint PK_{0}", classInfo.TableName), false); } } }