diff --git a/src/Libraries/Nop.Data/Extensions/FluentMigratorExtensions.cs b/src/Libraries/Nop.Data/Extensions/FluentMigratorExtensions.cs index 81f9d6f88f8..4ab5dc404e7 100644 --- a/src/Libraries/Nop.Data/Extensions/FluentMigratorExtensions.cs +++ b/src/Libraries/Nop.Data/Extensions/FluentMigratorExtensions.cs @@ -1,9 +1,14 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Data; +using System.Linq.Expressions; using System.Reflection; +using FluentMigrator.Builders.Alter; using FluentMigrator.Builders.Alter.Table; using FluentMigrator.Builders.Create; using FluentMigrator.Builders.Create.Table; +using FluentMigrator.Builders.Delete; +using FluentMigrator.Builders.Schema; +using FluentMigrator.Builders.Schema.Table; using FluentMigrator.Infrastructure.Extensions; using FluentMigrator.Model; using FluentMigrator.Runner; @@ -63,7 +68,7 @@ private static void DefineByOwnType(string columnName, Type propType, CreateTabl /// The builder to add the database engine(s) to /// The migration runner builder public static IMigrationRunnerBuilder AddNopDbEngines(this IMigrationRunnerBuilder builder) - { + { if (!DataSettingsManager.IsDatabaseInstalled()) return builder.AddSqlServer().AddMySql5().AddPostgres92(); @@ -145,6 +150,124 @@ public static void TableFor(this ICreateExpressionRoot expressionRoot) builder.RetrieveTableExpressions(type); } + /// + /// Targets a specific column of the entity’s mapped table for an ALTER COLUMN operation, + /// resolving both table and column names using . + /// + /// The entity type mapped to the database table. + /// The root expression for an ALTER TABLE operation. + /// An expression selecting the entity property to alter. + /// + /// A fluent syntax interface for specifying the new column type + /// and additional ALTER COLUMN options. + /// + public static IAlterTableColumnAsTypeSyntax AlterColumnFor(this IAlterExpressionRoot expressionRoot, Expression> selector) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + var propertyMemberExpression = selector.Body as MemberExpression + ?? (selector.Body as UnaryExpression)?.Operand as MemberExpression + ?? throw new ArgumentException("Selector must be a property expression.", nameof(selector)); + var columnName = NameCompatibilityManager.GetColumnName(typeof(TEntity), propertyMemberExpression.Member.Name); + return expressionRoot.Table(tableName).AlterColumn(columnName); + } + + /// + /// Deletes a column from the table mapped to the specified entity, + /// resolving the table name using . + /// + /// The entity type mapped to the database table. + /// The root delete expression. + /// The name of the column to delete. + public static void Column(this IDeleteExpressionRoot expressionRoot, string columnName) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + expressionRoot.Column(columnName).FromTable(tableName); + } + + /// + /// Determines whether the database table mapped to the specified entity exists, + /// resolving the table name using . + /// + /// The entity type mapped to the database table. + /// The root schema expression. + /// true if the table exists; otherwise, false. + public static bool TableExist(this ISchemaExpressionRoot expressionRoot) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + return expressionRoot.Table(tableName).Exists(); + } + + /// + /// Checks whether a mapped column exists in the database table for the specified entity. + /// Resolves both the table name and column name using . + /// + /// The entity type mapped to the database table. + /// The root schema expression. + /// An expression selecting the entity property to check. + /// true if the column exists; otherwise, false. + public static bool ColumnExist( + this ISchemaExpressionRoot expressionRoot, Expression> selector) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + var propertyMemberExpression = selector.Body as MemberExpression + ?? (selector.Body as UnaryExpression)?.Operand as MemberExpression + ?? throw new ArgumentException("Selector must be a property expression.", nameof(selector)); + var columnName = NameCompatibilityManager.GetColumnName(typeof(TEntity), propertyMemberExpression.Member.Name); + return expressionRoot.Table(tableName).Column(columnName).Exists(); + } + + /// + /// Checks whether a mapped column exists in the database table for the specified entity. + /// Resolves both the table name and column name using . + /// + /// The entity type mapped to the database table. + /// The root schema expression. + /// The column name + /// true if the column exists; otherwise, false. + public static bool ColumnExist( + this ISchemaExpressionRoot expressionRoot, string columnName) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + return expressionRoot.Table(tableName).Column(columnName).Exists(); + } + + /// + /// Targets the entity's mapped table for schema-related operations. + /// + /// The root expression for schema inspection + /// The entity type mapped to the database table + /// + /// A fluent syntax interface for performing schema operations + /// such as checking table or column existence. + /// + public static ISchemaTableSyntax TableFor(this ISchemaExpressionRoot expressionRoot) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + return expressionRoot.Table(tableName); + } + + /// + /// Adds a new column to the entity's mapped table for ALTER TABLE operations, + /// resolving the column name via . + /// + /// The entity type mapped to the database table + /// The alter table expression + /// An expression selecting the entity property + /// + /// A fluent syntax interface allowing further ALTER TABLE operations + /// on the specified column. + /// + public static IAlterTableColumnAsTypeSyntax AddColumnFor( + this IAlterExpressionRoot expressionRoot, Expression> selector) where TEntity : BaseEntity + { + var tableName = NameCompatibilityManager.GetTableName(typeof(TEntity)); + var propertyMemberExpression = selector.Body as MemberExpression + ?? (selector.Body as UnaryExpression)?.Operand as MemberExpression + ?? throw new ArgumentException("Selector must be a property expression.", nameof(selector)); + var columnName = NameCompatibilityManager.GetColumnName(typeof(TEntity), propertyMemberExpression.Member.Name); + return expressionRoot.Table(tableName).AddColumn(columnName); + } + /// /// Retrieves expressions for building an entity table /// diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo440/DataMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo440/DataMigration.cs index c49f4213172..10cd5dc1891 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo440/DataMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo440/DataMigration.cs @@ -4,6 +4,7 @@ using Nop.Core.Domain.Logging; using Nop.Core.Domain.Security; using Nop.Core.Domain.Vendors; +using Nop.Data.Extensions; using Nop.Data.Mapping; namespace Nop.Data.Migrations.UpgradeTo440; @@ -108,126 +109,140 @@ public override void Up() // //issue-3852 - var tableName = nameof(RewardPointsHistory); - var rph = Schema.Table(tableName); + var rewardPointsHistoryTableName = NameCompatibilityManager.GetTableName(typeof(RewardPointsHistory)); + var rph = Schema.Table(rewardPointsHistoryTableName); var columnName = "UsedWithOrder_Id"; - if (rph.Column(columnName).Exists()) + if (Schema.ColumnExist(columnName)) { var constraintName = "RewardPointsHistory_UsedWithOrder"; if (rph.Constraint(constraintName).Exists()) - Delete.UniqueConstraint(constraintName).FromTable(tableName); + Delete.UniqueConstraint(constraintName).FromTable(rewardPointsHistoryTableName); - Delete.Column(columnName).FromTable(tableName); + Delete.Column(columnName); } //#3353 - var productAttributeCombinationTableName = NameCompatibilityManager.GetTableName(typeof(ProductAttributeCombination)); //add column - if (!Schema.Table(productAttributeCombinationTableName).Column(nameof(ProductAttributeCombination.MinStockQuantity)).Exists()) + if (!Schema.ColumnExist(t => t.MinStockQuantity)) { - Alter.Table(productAttributeCombinationTableName) - .AddColumn(nameof(ProductAttributeCombination.MinStockQuantity)).AsInt32().NotNullable().SetExistingRowsTo(0); + Alter.AddColumnFor(t => t.MinStockQuantity) + .AsInt32() + .NotNullable() + .SetExistingRowsTo(0); } //#276 AJAX filters - var categoryTableName = NameCompatibilityManager.GetTableName(typeof(Category)); - var manufacturerTableName = NameCompatibilityManager.GetTableName(typeof(Manufacturer)); - var vendorTableName = NameCompatibilityManager.GetTableName(typeof(Vendor)); //remove column var priceRangesColumnName = "PriceRanges"; - if (Schema.Table(categoryTableName).Column(priceRangesColumnName).Exists()) - Delete.Column(priceRangesColumnName).FromTable(categoryTableName); + if (Schema.ColumnExist(priceRangesColumnName)) + Delete.Column(priceRangesColumnName); - if (Schema.Table(manufacturerTableName).Column(priceRangesColumnName).Exists()) - Delete.Column(priceRangesColumnName).FromTable(manufacturerTableName); + if (Schema.ColumnExist(priceRangesColumnName)) + Delete.Column(priceRangesColumnName); //add column - var priceRangeFilteringColumnName = "PriceRangeFiltering"; - - if (!Schema.Table(categoryTableName).Column(priceRangeFilteringColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceRangeFiltering)) { - Alter.Table(categoryTableName) - .AddColumn(priceRangeFilteringColumnName).AsBoolean().NotNullable().SetExistingRowsTo(true); + Alter.AddColumnFor(t => t.PriceRangeFiltering) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(true); } - if (!Schema.Table(manufacturerTableName).Column(priceRangeFilteringColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceRangeFiltering)) { - Alter.Table(manufacturerTableName) - .AddColumn(priceRangeFilteringColumnName).AsBoolean().NotNullable().SetExistingRowsTo(true); + Alter.AddColumnFor(t => t.PriceRangeFiltering) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(true); } - if (!Schema.Table(vendorTableName).Column(priceRangeFilteringColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceRangeFiltering)) { - Alter.Table(vendorTableName) - .AddColumn(priceRangeFilteringColumnName).AsBoolean().NotNullable().SetExistingRowsTo(true); + Alter.AddColumnFor(t => t.PriceRangeFiltering) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(true); } //add column - var priceFromColumnName = "PriceFrom"; - - if (!Schema.Table(categoryTableName).Column(priceFromColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceFrom)) { - Alter.Table(categoryTableName) - .AddColumn(priceFromColumnName).AsDecimal().NotNullable().SetExistingRowsTo(0); + Alter.AddColumnFor(t => t.PriceFrom) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(0); } - if (!Schema.Table(manufacturerTableName).Column(priceFromColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceFrom)) { - Alter.Table(manufacturerTableName) - .AddColumn(priceFromColumnName).AsDecimal().NotNullable().SetExistingRowsTo(0); + Alter.AddColumnFor(t => t.PriceFrom) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(0); } - if (!Schema.Table(vendorTableName).Column(priceFromColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceFrom)) { - Alter.Table(vendorTableName) - .AddColumn(priceFromColumnName).AsDecimal().NotNullable().SetExistingRowsTo(0); + Alter.AddColumnFor(t => t.PriceFrom) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(0); } //add column - var priceToColumnName = "PriceTo"; - - if (!Schema.Table(categoryTableName).Column(priceToColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceTo)) { - Alter.Table(categoryTableName) - .AddColumn(priceToColumnName).AsDecimal().NotNullable().SetExistingRowsTo(10000); + Alter.AddColumnFor(t => t.PriceTo) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(10000); } - if (!Schema.Table(manufacturerTableName).Column(priceToColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceTo)) { - Alter.Table(manufacturerTableName) - .AddColumn(priceToColumnName).AsDecimal().NotNullable().SetExistingRowsTo(10000); + Alter.AddColumnFor(t => t.PriceTo) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(10000); } - if (!Schema.Table(vendorTableName).Column(priceToColumnName).Exists()) + if (!Schema.ColumnExist(t => t.PriceTo)) { - Alter.Table(vendorTableName) - .AddColumn(priceToColumnName).AsDecimal().NotNullable().SetExistingRowsTo(10000); + Alter.AddColumnFor(t => t.PriceTo) + .AsDecimal() + .NotNullable() + .SetExistingRowsTo(10000); } //add column - var manuallyPriceRangeColumnName = "ManuallyPriceRange"; - - if (!Schema.Table(categoryTableName).Column(manuallyPriceRangeColumnName).Exists()) + if (!Schema.ColumnExist(t => t.ManuallyPriceRange)) { - Alter.Table(categoryTableName) - .AddColumn(manuallyPriceRangeColumnName).AsBoolean().NotNullable().SetExistingRowsTo(false); + Alter.AddColumnFor(t => t.ManuallyPriceRange) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(false); } - if (!Schema.Table(manufacturerTableName).Column(manuallyPriceRangeColumnName).Exists()) + if (!Schema.ColumnExist(t => t.ManuallyPriceRange)) { - Alter.Table(manufacturerTableName) - .AddColumn(manuallyPriceRangeColumnName).AsBoolean().NotNullable().SetExistingRowsTo(false); + Alter.AddColumnFor(t => t.ManuallyPriceRange) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(false); } - if (!Schema.Table(vendorTableName).Column(manuallyPriceRangeColumnName).Exists()) + if (!Schema.ColumnExist(t => t.ManuallyPriceRange)) { - Alter.Table(vendorTableName) - .AddColumn(manuallyPriceRangeColumnName).AsBoolean().NotNullable().SetExistingRowsTo(false); + Alter.AddColumnFor(t => t.ManuallyPriceRange) + .AsBoolean() + .NotNullable() + .SetExistingRowsTo(false); } } diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo440/SpecificationAttributeGroupingMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo440/SpecificationAttributeGroupingMigration.cs index 4f6c404c706..1b65061b6f0 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo440/SpecificationAttributeGroupingMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo440/SpecificationAttributeGroupingMigration.cs @@ -1,7 +1,6 @@ using FluentMigrator; using Nop.Core.Domain.Catalog; using Nop.Data.Extensions; -using Nop.Data.Mapping; namespace Nop.Data.Migrations.UpgradeTo440; @@ -15,14 +14,16 @@ public class SpecificationAttributeGroupingMigration : ForwardOnlyMigration /// public override void Up() { - if (!Schema.Table(NameCompatibilityManager.GetTableName(typeof(SpecificationAttributeGroup))).Exists()) + if (!Schema.TableExist()) Create.TableFor(); - if (!Schema.Table(NameCompatibilityManager.GetTableName(typeof(SpecificationAttribute))).Column(nameof(SpecificationAttribute.SpecificationAttributeGroupId)).Exists()) + if (!Schema.ColumnExist(t => t.SpecificationAttributeGroupId)) { //add new column - Alter.Table(NameCompatibilityManager.GetTableName(typeof(SpecificationAttribute))) - .AddColumn(nameof(SpecificationAttribute.SpecificationAttributeGroupId)).AsInt32().Nullable().ForeignKey(); + Alter.AddColumnFor(t => t.SpecificationAttributeGroupId) + .AsInt32() + .Nullable() + .ForeignKey(); } } diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo450/DataMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo450/DataMigration.cs index 252a302e194..c52cc0f57d0 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo450/DataMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo450/DataMigration.cs @@ -5,7 +5,7 @@ using Nop.Core.Domain.ScheduleTasks; using Nop.Core.Domain.Security; using Nop.Core.Domain.Shipping; -using Nop.Data.Mapping; +using Nop.Data.Extensions; namespace Nop.Data.Migrations.UpgradeTo450; @@ -25,13 +25,12 @@ public DataMigration(INopDataProvider dataProvider) public override void Up() { // add column - var shipmentTableName = nameof(Shipment); - var collectedDateUtcColumnName = "ReadyForPickupDateUtc"; - if (!Schema.Table(shipmentTableName).Column(collectedDateUtcColumnName).Exists()) + if (!Schema.ColumnExist(t => t.ReadyForPickupDateUtc)) { - Alter.Table(shipmentTableName) - .AddColumn(collectedDateUtcColumnName).AsDateTime2().Nullable(); + Alter.AddColumnFor(t => t.ReadyForPickupDateUtc) + .AsDateTime2() + .Nullable(); } // add message template @@ -49,17 +48,19 @@ public override void Up() ); } //#5547 - var scheduleTaskTableName = NameCompatibilityManager.GetTableName(typeof(ScheduleTask)); //add column - if (!Schema.Table(scheduleTaskTableName).Column(nameof(ScheduleTask.LastEnabledUtc)).Exists()) + if (!Schema.ColumnExist(t => t.LastEnabledUtc)) { - Alter.Table(scheduleTaskTableName) - .AddColumn(nameof(ScheduleTask.LastEnabledUtc)).AsDateTime2().Nullable(); + Alter.AddColumnFor(t => t.LastEnabledUtc) + .AsDateTime2() + .Nullable(); } else { - Alter.Table(scheduleTaskTableName).AlterColumn(nameof(ScheduleTask.LastEnabledUtc)).AsDateTime2().Nullable(); + Alter.AlterColumnFor(t => t.LastEnabledUtc) + .AsDateTime2() + .Nullable(); } //#5939 @@ -89,13 +90,13 @@ public override void Up() } //add column - var returnRequestTableName = NameCompatibilityManager.GetTableName(typeof(ReturnRequest)); - var returnedQuantityColumnName = "ReturnedQuantity"; - if (!Schema.Table(returnRequestTableName).Column(returnedQuantityColumnName).Exists()) + if (!Schema.ColumnExist(t => t.ReturnedQuantity)) { - Alter.Table(returnRequestTableName) - .AddColumn(returnedQuantityColumnName).AsInt32().NotNullable().SetExistingRowsTo(0); + Alter.AddColumnFor(t => t.ReturnedQuantity) + .AsInt32() + .NotNullable() + .SetExistingRowsTo(0); } //#6053 diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/MySqlDateTimeWithPrecisionMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/MySqlDateTimeWithPrecisionMigration.cs index a74667753c6..7de00874564 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/MySqlDateTimeWithPrecisionMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/MySqlDateTimeWithPrecisionMigration.cs @@ -15,7 +15,7 @@ using Nop.Core.Domain.ScheduleTasks; using Nop.Core.Domain.Shipping; using Nop.Core.Domain.Vendors; -using Nop.Data.Mapping; +using Nop.Data.Extensions; namespace Nop.Data.Migrations.UpgradeTo460; @@ -30,313 +30,310 @@ public override void Up() if (dataSettings.DataProvider != DataProviderType.MySql) return; - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ActivityLog))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ActivityLog), nameof(ActivityLog.CreatedOnUtc))) + Alter.AlterColumnFor
(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Address))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Address), nameof(Address.CreatedOnUtc))) - .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(BackInStockSubscription))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(BackInStockSubscription), nameof(BackInStockSubscription.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(BlogComment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(BlogComment), nameof(BlogComment.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(BlogPost))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(BlogPost), nameof(BlogPost.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(BlogPost))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(BlogPost), nameof(BlogPost.EndDateUtc))) + + Alter.AlterColumnFor(t => t.EndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(BlogPost))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(BlogPost), nameof(BlogPost.StartDateUtc))) + + Alter.AlterColumnFor(t => t.StartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Campaign))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Campaign), nameof(Campaign.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Campaign))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Campaign), nameof(Campaign.DontSendBeforeDateUtc))) + + Alter.AlterColumnFor(t => t.DontSendBeforeDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Category))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Category), nameof(Category.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Category))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Category), nameof(Category.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Currency))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Currency), nameof(Currency.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Currency))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Currency), nameof(Currency.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Customer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Customer), nameof(Customer.CannotLoginUntilDateUtc))) + + Alter.AlterColumnFor(t => t.CannotLoginUntilDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Customer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Customer), nameof(Customer.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Customer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Customer), nameof(Customer.DateOfBirth))) + + Alter.AlterColumnFor(t => t.DateOfBirth) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Customer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Customer), nameof(Customer.LastActivityDateUtc))) + + Alter.AlterColumnFor(t => t.LastActivityDateUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Customer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Customer), nameof(Customer.LastLoginDateUtc))) + + Alter.AlterColumnFor(t => t.LastLoginDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(CustomerPassword))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(CustomerPassword), nameof(CustomerPassword.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Discount))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Discount), nameof(Discount.EndDateUtc))) + + Alter.AlterColumnFor(t => t.EndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Discount))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Discount), nameof(Discount.StartDateUtc))) + + Alter.AlterColumnFor(t => t.StartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(DiscountUsageHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(DiscountUsageHistory), nameof(DiscountUsageHistory.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Forum))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Forum), nameof(Forum.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Forum))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Forum), nameof(Forum.LastPostTime))) + + Alter.AlterColumnFor(t => t.LastPostTime) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Forum))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Forum), nameof(Forum.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumGroup))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumGroup), nameof(ForumGroup.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumGroup))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumGroup), nameof(ForumGroup.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumPost))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumPost), nameof(ForumPost.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumPost))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumPost), nameof(ForumPost.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumPostVote))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumPostVote), nameof(ForumPostVote.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(PrivateMessage))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(PrivateMessage), nameof(PrivateMessage.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumSubscription))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumSubscription), nameof(ForumSubscription.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumTopic))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumTopic), nameof(ForumTopic.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumTopic))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumTopic), nameof(ForumTopic.LastPostTime))) + + Alter.AlterColumnFor(t => t.LastPostTime) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ForumTopic))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ForumTopic), nameof(ForumTopic.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(GdprLog))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(GdprLog), nameof(GdprLog.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(GenericAttribute))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(GenericAttribute), nameof(GenericAttribute.CreatedOrUpdatedDateUTC))) + + Alter.AlterColumnFor(t => t.CreatedOrUpdatedDateUTC) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(GiftCard))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(GiftCard), nameof(GiftCard.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(GiftCardUsageHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(GiftCardUsageHistory), nameof(GiftCardUsageHistory.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Log))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Log), nameof(Log.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Manufacturer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Manufacturer), nameof(Manufacturer.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Manufacturer))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Manufacturer), nameof(Manufacturer.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(MigrationVersionInfo))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(MigrationVersionInfo), nameof(MigrationVersionInfo.AppliedOn))) + + Alter.AlterColumnFor(t => t.AppliedOn) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(NewsItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(NewsItem), nameof(NewsItem.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(NewsItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(NewsItem), nameof(NewsItem.EndDateUtc))) + + Alter.AlterColumnFor(t => t.EndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(NewsItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(NewsItem), nameof(NewsItem.StartDateUtc))) + + Alter.AlterColumnFor(t => t.StartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(NewsComment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(NewsComment), nameof(NewsComment.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(NewsLetterSubscription))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(NewsLetterSubscription), nameof(NewsLetterSubscription.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Order))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Order), nameof(Order.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Order))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Order), nameof(Order.PaidDateUtc))) + + Alter.AlterColumnFor(t => t.PaidDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(OrderItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(OrderItem), nameof(OrderItem.RentalEndDateUtc))) + + Alter.AlterColumnFor(t => t.RentalEndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(OrderItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(OrderItem), nameof(OrderItem.RentalStartDateUtc))) + + Alter.AlterColumnFor(t => t.RentalStartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(OrderNote))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(OrderNote), nameof(OrderNote.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Poll))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Poll), nameof(Poll.EndDateUtc))) + + Alter.AlterColumnFor(t => t.EndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Poll))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Poll), nameof(Poll.StartDateUtc))) + + Alter.AlterColumnFor(t => t.StartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(PollVotingRecord))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(PollVotingRecord), nameof(PollVotingRecord.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.AvailableEndDateTimeUtc))) + + Alter.AlterColumnFor(t => t.AvailableEndDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.AvailableStartDateTimeUtc))) + + Alter.AlterColumnFor(t => t.AvailableStartDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.MarkAsNewEndDateTimeUtc))) + + Alter.AlterColumnFor(t => t.MarkAsNewEndDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.MarkAsNewStartDateTimeUtc))) + + Alter.AlterColumnFor(t => t.MarkAsNewStartDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.PreOrderAvailabilityStartDateTimeUtc))) + + Alter.AlterColumnFor(t => t.PreOrderAvailabilityStartDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Product))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Product), nameof(Product.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ProductReview))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ProductReview), nameof(ProductReview.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(QueuedEmail))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(QueuedEmail), nameof(QueuedEmail.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(QueuedEmail))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(QueuedEmail), nameof(QueuedEmail.DontSendBeforeDateUtc))) + + Alter.AlterColumnFor(t => t.DontSendBeforeDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(QueuedEmail))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(QueuedEmail), nameof(QueuedEmail.SentOnUtc))) + + Alter.AlterColumnFor(t => t.SentOnUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(RecurringPayment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(RecurringPayment), nameof(RecurringPayment.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(RecurringPayment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(RecurringPayment), nameof(RecurringPayment.StartDateUtc))) + + Alter.AlterColumnFor(t => t.StartDateUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(RecurringPaymentHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(RecurringPaymentHistory), nameof(RecurringPaymentHistory.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ReturnRequest))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ReturnRequest), nameof(ReturnRequest.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ReturnRequest))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ReturnRequest), nameof(ReturnRequest.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(RewardPointsHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(RewardPointsHistory), nameof(RewardPointsHistory.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(RewardPointsHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(RewardPointsHistory), nameof(RewardPointsHistory.EndDateUtc))) + + Alter.AlterColumnFor(t => t.EndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ScheduleTask))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ScheduleTask), nameof(ScheduleTask.LastEnabledUtc))) + + Alter.AlterColumnFor(t => t.LastEnabledUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ScheduleTask))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ScheduleTask), nameof(ScheduleTask.LastEndUtc))) + + Alter.AlterColumnFor(t => t.LastEndUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ScheduleTask))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ScheduleTask), nameof(ScheduleTask.LastStartUtc))) + + Alter.AlterColumnFor(t => t.LastStartUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ScheduleTask))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ScheduleTask), nameof(ScheduleTask.LastSuccessUtc))) + + Alter.AlterColumnFor(t => t.LastSuccessUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Shipment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Shipment), nameof(Shipment.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Shipment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Shipment), nameof(Shipment.DeliveryDateUtc))) + + Alter.AlterColumnFor(t => t.DeliveryDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Shipment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Shipment), nameof(Shipment.ReadyForPickupDateUtc))) + + Alter.AlterColumnFor(t => t.ReadyForPickupDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(Shipment))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(Shipment), nameof(Shipment.ShippedDateUtc))) + + Alter.AlterColumnFor(t => t.ShippedDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ShoppingCartItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ShoppingCartItem), nameof(ShoppingCartItem.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ShoppingCartItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ShoppingCartItem), nameof(ShoppingCartItem.RentalEndDateUtc))) + + Alter.AlterColumnFor(t => t.RentalEndDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ShoppingCartItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ShoppingCartItem), nameof(ShoppingCartItem.RentalStartDateUtc))) + + Alter.AlterColumnFor(t => t.RentalStartDateUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(ShoppingCartItem))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(ShoppingCartItem), nameof(ShoppingCartItem.UpdatedOnUtc))) + + Alter.AlterColumnFor(t => t.UpdatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(StockQuantityHistory))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(StockQuantityHistory), nameof(StockQuantityHistory.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(TierPrice))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(TierPrice), nameof(TierPrice.EndDateTimeUtc))) + + Alter.AlterColumnFor(t => t.EndDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(TierPrice))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(TierPrice), nameof(TierPrice.StartDateTimeUtc))) + + Alter.AlterColumnFor(t => t.StartDateTimeUtc) .AsCustom("datetime(6)") .Nullable(); - Alter.Table(NameCompatibilityManager.GetTableName(typeof(VendorNote))) - .AlterColumn(NameCompatibilityManager.GetColumnName(typeof(VendorNote), nameof(VendorNote.CreatedOnUtc))) + + Alter.AlterColumnFor(t => t.CreatedOnUtc) .AsCustom("datetime(6)"); + } } \ No newline at end of file diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/SchemaMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/SchemaMigration.cs index 57334e2e3ce..4ef49995da0 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/SchemaMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/SchemaMigration.cs @@ -18,144 +18,71 @@ public class SchemaMigration : ForwardOnlyMigration public override void Up() { // add column - var customerTableName = nameof(Customer); - - var firstNameCustomerColumnName = nameof(Customer.FirstName); - var lastNameCustomerColumnName = nameof(Customer.LastName); - var genderCustomerColumnName = nameof(Customer.Gender); - var dobCustomerColumnName = nameof(Customer.DateOfBirth); - var companyCustomerColumnName = nameof(Customer.Company); - var address1CustomerColumnName = nameof(Customer.StreetAddress); - var address2CustomerColumnName = nameof(Customer.StreetAddress2); - var zipCustomerColumnName = nameof(Customer.ZipPostalCode); - var cityCustomerColumnName = nameof(Customer.City); - var countyCustomerColumnName = nameof(Customer.County); - var countryIdCustomerColumnName = nameof(Customer.CountryId); - var stateIdCustomerColumnName = nameof(Customer.StateProvinceId); - var phoneCustomerColumnName = nameof(Customer.Phone); - var faxCustomerColumnName = nameof(Customer.Fax); - var vatNumberCustomerColumnName = nameof(Customer.VatNumber); - var vatNumberStatusIdCustomerColumnName = nameof(Customer.VatNumberStatusId); - var timeZoneIdCustomerColumnName = nameof(Customer.TimeZoneId); - var attributeXmlCustomerColumnName = nameof(Customer.CustomCustomerAttributesXML); - var currencyIdCustomerColumnName = nameof(Customer.CurrencyId); - var languageIdCustomerColumnName = nameof(Customer.LanguageId); - var taxDisplayTypeIdCustomerColumnName = nameof(Customer.TaxDisplayTypeId); - - if (!Schema.Table(customerTableName).Column(firstNameCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(firstNameCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(lastNameCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(lastNameCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(genderCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(genderCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(dobCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(dobCustomerColumnName).AsDateTime2().Nullable(); - } - if (!Schema.Table(customerTableName).Column(companyCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(companyCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(address1CustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(address1CustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(address2CustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(address2CustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(zipCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(zipCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(cityCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(cityCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(countyCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(countyCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(countryIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(countryIdCustomerColumnName).AsInt32().NotNullable().SetExistingRowsTo(0); - } - if (!Schema.Table(customerTableName).Column(stateIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(stateIdCustomerColumnName).AsInt32().NotNullable().SetExistingRowsTo(0); - } - if (!Schema.Table(customerTableName).Column(phoneCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(phoneCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(faxCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(faxCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(vatNumberCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(vatNumberCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(vatNumberStatusIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(vatNumberStatusIdCustomerColumnName).AsInt32().NotNullable().SetExistingRowsTo((int)VatNumberStatus.Unknown); - } - if (!Schema.Table(customerTableName).Column(timeZoneIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(timeZoneIdCustomerColumnName).AsString(1000).Nullable(); - } - if (!Schema.Table(customerTableName).Column(attributeXmlCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(attributeXmlCustomerColumnName).AsString(int.MaxValue).Nullable(); - } - if (!Schema.Table(customerTableName).Column(currencyIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(currencyIdCustomerColumnName).AsInt32().ForeignKey(onDelete: Rule.SetNull).Nullable(); - } - if (!Schema.Table(customerTableName).Column(languageIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(languageIdCustomerColumnName).AsInt32().ForeignKey(onDelete: Rule.SetNull).Nullable(); - } - if (!Schema.Table(customerTableName).Column(taxDisplayTypeIdCustomerColumnName).Exists()) - { - Alter.Table(customerTableName) - .AddColumn(taxDisplayTypeIdCustomerColumnName).AsInt32().Nullable(); - } - - //5705 - var discountTableName = nameof(Discount); - var isActiveDiscountColumnName = nameof(Discount.IsActive); - - if (!Schema.Table(discountTableName).Column(isActiveDiscountColumnName).Exists()) - { - Alter.Table(discountTableName) - .AddColumn(isActiveDiscountColumnName).AsBoolean().NotNullable().SetExistingRowsTo(true); - } + if (!Schema.ColumnExist(t => t.FirstName)) + Alter.AddColumnFor(t => t.FirstName).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.LastName)) + Alter.AddColumnFor(t => t.LastName).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.Gender)) + Alter.AddColumnFor(t => t.Gender).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.DateOfBirth)) + Alter.AddColumnFor(t => t.DateOfBirth).AsDateTime2().Nullable(); + + if (!Schema.ColumnExist(t => t.Company)) + Alter.AddColumnFor(t => t.Company).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.StreetAddress)) + Alter.AddColumnFor(t => t.StreetAddress).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.StreetAddress2)) + Alter.AddColumnFor(t => t.StreetAddress2).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.ZipPostalCode)) + Alter.AddColumnFor(t => t.ZipPostalCode).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.City)) + Alter.AddColumnFor(t => t.City).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.County)) + Alter.AddColumnFor(t => t.County).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.CountryId)) + Alter.AddColumnFor(t => t.CountryId).AsInt32().NotNullable().SetExistingRowsTo(0); + + if (!Schema.ColumnExist(t => t.StateProvinceId)) + Alter.AddColumnFor(t => t.StateProvinceId).AsInt32().NotNullable().SetExistingRowsTo(0); + + if (!Schema.ColumnExist(t => t.Phone)) + Alter.AddColumnFor(t => t.Phone).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.Fax)) + Alter.AddColumnFor(t => t.Fax).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.VatNumber)) + Alter.AddColumnFor(t => t.VatNumber).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.VatNumberStatusId)) + Alter.AddColumnFor(t => t.VatNumberStatusId).AsInt32().NotNullable().SetExistingRowsTo((int)VatNumberStatus.Unknown); + + if (!Schema.ColumnExist(t => t.TimeZoneId)) + Alter.AddColumnFor(t => t.TimeZoneId).AsString(1000).Nullable(); + + if (!Schema.ColumnExist(t => t.CustomCustomerAttributesXML)) + Alter.AddColumnFor(t => t.CustomCustomerAttributesXML).AsString(int.MaxValue).Nullable(); + + if (!Schema.ColumnExist(t => t.CurrencyId)) + Alter.AddColumnFor(t => t.CurrencyId).AsInt32().ForeignKey(onDelete: Rule.SetNull).Nullable(); + + if (!Schema.ColumnExist(t => t.LanguageId)) + Alter.AddColumnFor(t => t.LanguageId).AsInt32().ForeignKey(onDelete: Rule.SetNull).Nullable(); + + if (!Schema.ColumnExist(t => t.TaxDisplayTypeId)) + Alter.AddColumnFor(t => t.TaxDisplayTypeId).AsInt32().Nullable(); + + // Discount table + if (!Schema.ColumnExist(t => t.IsActive)) + Alter.AddColumnFor(t => t.IsActive).AsBoolean().NotNullable().SetExistingRowsTo(true); } } \ No newline at end of file diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/StoreMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/StoreMigration.cs index f4678d80d5c..3b6ba15f5de 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/StoreMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/StoreMigration.cs @@ -1,5 +1,6 @@ using FluentMigrator; using Nop.Core.Domain.Stores; +using Nop.Data.Extensions; namespace Nop.Data.Migrations.UpgradeTo460; @@ -8,49 +9,38 @@ public class StoreMigration : ForwardOnlyMigration { public override void Up() { - if (!Schema.Table(nameof(Store)).Column(nameof(Store.Deleted)).Exists()) - { + if (!Schema.ColumnExist(t => t.Deleted)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.Deleted)).AsBoolean().WithDefaultValue(false); + Alter.AddColumnFor(t => t.Deleted).AsBoolean().WithDefaultValue(false); - Alter.Table(nameof(Store)) - .AlterColumn(nameof(Store.Deleted)).AsBoolean(); - } - - if (!Schema.Table(nameof(Store)).Column(nameof(Store.DefaultTitle)).Exists()) + if (!Schema.ColumnExist(t => t.DefaultTitle)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.DefaultTitle)).AsString(int.MaxValue).Nullable(); + Alter.AddColumnFor(t => t.DefaultTitle).AsString(int.MaxValue).Nullable(); else - Alter.Table(nameof(Store)).AlterColumn(nameof(Store.DefaultTitle)).AsString(int.MaxValue).Nullable(); + Alter.AlterColumnFor(t => t.DefaultTitle).AsString(int.MaxValue).Nullable(); - if (!Schema.Table(nameof(Store)).Column(nameof(Store.DefaultMetaDescription)).Exists()) + if (!Schema.ColumnExist(t => t.DefaultMetaDescription)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.DefaultMetaDescription)).AsString(int.MaxValue).Nullable(); + Alter.AddColumnFor(t => t.DefaultMetaDescription).AsString(int.MaxValue).Nullable(); else - Alter.Table(nameof(Store)).AlterColumn(nameof(Store.DefaultMetaDescription)).AsString(int.MaxValue).Nullable(); + Alter.AlterColumnFor(t => t.DefaultMetaDescription).AsString(int.MaxValue).Nullable(); - if (!Schema.Table(nameof(Store)).Column(nameof(Store.DefaultMetaKeywords)).Exists()) + if (!Schema.ColumnExist(t => t.DefaultMetaKeywords)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.DefaultMetaKeywords)).AsString(int.MaxValue).Nullable(); + Alter.AddColumnFor(t => t.DefaultMetaKeywords).AsString(int.MaxValue).Nullable(); else - Alter.Table(nameof(Store)).AlterColumn(nameof(Store.DefaultMetaKeywords)).AsString(int.MaxValue).Nullable(); + Alter.AlterColumnFor(t => t.DefaultMetaKeywords).AsString(int.MaxValue).Nullable(); - if (!Schema.Table(nameof(Store)).Column(nameof(Store.HomepageDescription)).Exists()) + if (!Schema.ColumnExist(t => t.HomepageDescription)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.HomepageDescription)).AsString(int.MaxValue).Nullable(); + Alter.AddColumnFor(t => t.HomepageDescription).AsString(int.MaxValue).Nullable(); else - Alter.Table(nameof(Store)).AlterColumn(nameof(Store.HomepageDescription)).AsString(int.MaxValue).Nullable(); + Alter.AlterColumnFor(t => t.HomepageDescription).AsString(int.MaxValue).Nullable(); - if (!Schema.Table(nameof(Store)).Column(nameof(Store.HomepageTitle)).Exists()) + if (!Schema.ColumnExist(t => t.HomepageTitle)) //add new column - Alter.Table(nameof(Store)) - .AddColumn(nameof(Store.HomepageTitle)).AsString(int.MaxValue).Nullable(); + Alter.AddColumnFor(t => t.HomepageTitle).AsString(int.MaxValue).Nullable(); else - Alter.Table(nameof(Store)).AlterColumn(nameof(Store.HomepageTitle)).AsString(int.MaxValue).Nullable(); + Alter.AlterColumnFor(t => t.HomepageTitle).AsString(int.MaxValue).Nullable(); } } \ No newline at end of file diff --git a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/VideoMigration.cs b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/VideoMigration.cs index c90184f4aac..92c09f46015 100644 --- a/src/Libraries/Nop.Data/Migrations/UpgradeTo460/VideoMigration.cs +++ b/src/Libraries/Nop.Data/Migrations/UpgradeTo460/VideoMigration.cs @@ -2,7 +2,6 @@ using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Media; using Nop.Data.Extensions; -using Nop.Data.Mapping; namespace Nop.Data.Migrations.UpgradeTo460; @@ -14,10 +13,10 @@ public class VideoMigration : ForwardOnlyMigration /// public override void Up() { - if (!Schema.Table(NameCompatibilityManager.GetTableName(typeof(Video))).Exists()) + if (!Schema.TableExist