diff --git a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.Designer.cs b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.Designer.cs
new file mode 100644
index 000000000..0c3942825
--- /dev/null
+++ b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.Designer.cs
@@ -0,0 +1,860 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using VirtoCommerce.CartModule.Data.Repositories;
+
+namespace VirtoCommerce.CartModule.Data.Migrations
+{
+ [DbContext(typeof(CartDbContext))]
+ [Migration("20190909080032_AddCartSupportSoftDeletion")]
+ partial class AddCartSupportSoftDeletion
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.2.3-servicing-35854")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128)
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.AddressEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("AddressType")
+ .HasMaxLength(32);
+
+ b.Property("City")
+ .IsRequired()
+ .HasMaxLength(128);
+
+ b.Property("CountryCode")
+ .HasMaxLength(3);
+
+ b.Property("CountryName")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("Email")
+ .HasMaxLength(254);
+
+ b.Property("FirstName")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("LastName")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("Line1")
+ .HasMaxLength(2048);
+
+ b.Property("Line2")
+ .HasMaxLength(2048);
+
+ b.Property("Name")
+ .HasMaxLength(2048);
+
+ b.Property("Organization")
+ .HasMaxLength(64);
+
+ b.Property("PaymentId");
+
+ b.Property("Phone")
+ .HasMaxLength(64);
+
+ b.Property("PostalCode")
+ .HasMaxLength(64);
+
+ b.Property("RegionId")
+ .HasMaxLength(128);
+
+ b.Property("RegionName")
+ .HasMaxLength(128);
+
+ b.Property("ShipmentId");
+
+ b.Property("ShoppingCartId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PaymentId");
+
+ b.HasIndex("ShipmentId");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartAddress");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.CartDynamicPropertyObjectValueEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("BooleanValue");
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("DateTimeValue");
+
+ b.Property("DecimalValue")
+ .HasColumnType("decimal(18,5)");
+
+ b.Property("DictionaryItemId")
+ .HasMaxLength(128);
+
+ b.Property("IntegerValue");
+
+ b.Property("LineItemId");
+
+ b.Property("Locale")
+ .HasMaxLength(64);
+
+ b.Property("LongTextValue");
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("ObjectId")
+ .HasMaxLength(128);
+
+ b.Property("ObjectType")
+ .HasMaxLength(256);
+
+ b.Property("PaymentId");
+
+ b.Property("PropertyId")
+ .HasMaxLength(128);
+
+ b.Property("PropertyName")
+ .HasMaxLength(256);
+
+ b.Property("ShipmentId");
+
+ b.Property("ShoppingCartId");
+
+ b.Property("ShortTextValue")
+ .HasMaxLength(512);
+
+ b.Property("ValueType")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.HasKey("Id");
+
+ b.HasIndex("LineItemId");
+
+ b.HasIndex("PaymentId");
+
+ b.HasIndex("ShipmentId");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.HasIndex("ObjectType", "LineItemId")
+ .HasName("IX_ObjectType_LineItemId");
+
+ b.HasIndex("ObjectType", "ObjectId")
+ .HasName("IX_ObjectType_ObjectId");
+
+ b.HasIndex("ObjectType", "PaymentId")
+ .HasName("IX_ObjectType_PaymentId");
+
+ b.HasIndex("ObjectType", "ShipmentId")
+ .HasName("IX_ObjectType_ShipmentId");
+
+ b.HasIndex("ObjectType", "ShoppingCartId")
+ .HasName("IX_ObjectType_ShoppingCartId");
+
+ b.ToTable("CartDynamicPropertyObjectValue");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.CouponEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("Code")
+ .HasMaxLength(64);
+
+ b.Property("ShoppingCartId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartCoupon");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.DiscountEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CouponCode")
+ .HasMaxLength(64);
+
+ b.Property("Currency")
+ .IsRequired()
+ .HasMaxLength(3);
+
+ b.Property("DiscountAmount")
+ .HasColumnType("Money");
+
+ b.Property("DiscountAmountWithTax")
+ .HasColumnType("Money");
+
+ b.Property("LineItemId");
+
+ b.Property("PaymentId");
+
+ b.Property("PromotionDescription")
+ .HasMaxLength(1024);
+
+ b.Property("PromotionId")
+ .HasMaxLength(64);
+
+ b.Property("ShipmentId");
+
+ b.Property("ShoppingCartId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LineItemId");
+
+ b.HasIndex("PaymentId");
+
+ b.HasIndex("ShipmentId");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartDiscount");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.LineItemEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CatalogId")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("CategoryId")
+ .HasMaxLength(64);
+
+ b.Property("Comment")
+ .HasMaxLength(2048);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("Currency")
+ .IsRequired()
+ .HasMaxLength(3);
+
+ b.Property("DiscountAmount")
+ .HasColumnType("Money");
+
+ b.Property("DiscountAmountWithTax")
+ .HasColumnType("Money");
+
+ b.Property("Fee")
+ .HasColumnType("Money");
+
+ b.Property("FeeWithTax")
+ .HasColumnType("Money");
+
+ b.Property("FulfillmentLocationCode")
+ .HasMaxLength(64);
+
+ b.Property("Height");
+
+ b.Property("ImageUrl")
+ .HasMaxLength(1028);
+
+ b.Property("IsGift");
+
+ b.Property("IsReadOnly");
+
+ b.Property("IsReccuring");
+
+ b.Property("LanguageCode")
+ .HasMaxLength(16);
+
+ b.Property("Length");
+
+ b.Property("ListPrice")
+ .HasColumnType("Money");
+
+ b.Property("ListPriceWithTax")
+ .HasColumnType("Money");
+
+ b.Property("MeasureUnit")
+ .HasMaxLength(32);
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256);
+
+ b.Property("PriceId")
+ .HasMaxLength(128);
+
+ b.Property("ProductId")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("ProductType")
+ .HasMaxLength(64);
+
+ b.Property("Quantity");
+
+ b.Property("RequiredShipping");
+
+ b.Property("SalePrice")
+ .HasColumnType("Money");
+
+ b.Property("SalePriceWithTax")
+ .HasColumnType("Money");
+
+ b.Property("ShipmentMethodCode")
+ .HasMaxLength(64);
+
+ b.Property("ShoppingCartId")
+ .IsRequired();
+
+ b.Property("Sku")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("TaxIncluded");
+
+ b.Property("TaxPercentRate")
+ .HasColumnType("decimal(18,4)");
+
+ b.Property("TaxTotal")
+ .HasColumnType("Money");
+
+ b.Property("TaxType")
+ .HasMaxLength(64);
+
+ b.Property("ValidationType")
+ .HasMaxLength(64);
+
+ b.Property("VolumetricWeight");
+
+ b.Property("Weight");
+
+ b.Property("WeightUnit")
+ .HasMaxLength(32);
+
+ b.Property("Width");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartLineItem");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.PaymentEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("Amount")
+ .HasColumnType("Money");
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("Currency")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("DiscountAmount")
+ .HasColumnType("Money");
+
+ b.Property("DiscountAmountWithTax")
+ .HasColumnType("Money");
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("PaymentGatewayCode")
+ .HasMaxLength(64);
+
+ b.Property("Price")
+ .HasColumnType("Money");
+
+ b.Property("PriceWithTax")
+ .HasColumnType("Money");
+
+ b.Property("Purpose")
+ .HasMaxLength(1024);
+
+ b.Property("ShoppingCartId")
+ .IsRequired();
+
+ b.Property("TaxPercentRate")
+ .HasColumnType("decimal(18,4)");
+
+ b.Property("TaxTotal")
+ .HasColumnType("Money");
+
+ b.Property("TaxType")
+ .HasMaxLength(64);
+
+ b.Property("Total")
+ .HasColumnType("Money");
+
+ b.Property("TotalWithTax")
+ .HasColumnType("Money");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartPayment");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("Currency")
+ .IsRequired()
+ .HasMaxLength(3);
+
+ b.Property("DimensionHeight");
+
+ b.Property("DimensionLength");
+
+ b.Property("DimensionUnit")
+ .HasMaxLength(16);
+
+ b.Property("DimensionWidth");
+
+ b.Property("DiscountAmount")
+ .HasColumnType("Money");
+
+ b.Property("DiscountAmountWithTax")
+ .HasColumnType("Money");
+
+ b.Property("Fee")
+ .HasColumnType("Money");
+
+ b.Property("FeeWithTax")
+ .HasColumnType("Money");
+
+ b.Property("FulfillmentCenterId")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Price")
+ .HasColumnType("Money");
+
+ b.Property("PriceWithTax")
+ .HasColumnType("Money");
+
+ b.Property("ShipmentMethodCode")
+ .HasMaxLength(64);
+
+ b.Property("ShipmentMethodOption")
+ .HasMaxLength(64);
+
+ b.Property("ShoppingCartId")
+ .IsRequired();
+
+ b.Property("TaxIncluded");
+
+ b.Property("TaxPercentRate")
+ .HasColumnType("decimal(18,4)");
+
+ b.Property("TaxTotal")
+ .HasColumnType("Money");
+
+ b.Property("TaxType")
+ .HasMaxLength(64);
+
+ b.Property("Total")
+ .HasColumnType("Money");
+
+ b.Property("TotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("VolumetricWeight");
+
+ b.Property("WeightUnit")
+ .HasMaxLength(16);
+
+ b.Property("WeightValue");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartShipment");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.ShipmentItemEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("BarCode")
+ .HasMaxLength(128);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("LineItemId")
+ .IsRequired();
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Quantity");
+
+ b.Property("ShipmentId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasIndex("LineItemId");
+
+ b.HasIndex("ShipmentId");
+
+ b.ToTable("CartShipmentItem");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("ChannelId")
+ .HasMaxLength(64);
+
+ b.Property("Comment")
+ .HasMaxLength(2048);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("Currency")
+ .IsRequired()
+ .HasMaxLength(3);
+
+ b.Property("CustomerId")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("CustomerName")
+ .HasMaxLength(128);
+
+ b.Property("DiscountAmount")
+ .HasColumnType("Money");
+
+ b.Property("DiscountTotal")
+ .HasColumnType("Money");
+
+ b.Property("DiscountTotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("Fee")
+ .HasColumnType("Money");
+
+ b.Property("FeeWithTax")
+ .HasColumnType("Money");
+
+ b.Property("HandlingTotal")
+ .HasColumnType("Money");
+
+ b.Property("HandlingTotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("IsAnonymous");
+
+ b.Property("IsDeleted");
+
+ b.Property("IsRecuring");
+
+ b.Property("LanguageCode")
+ .HasMaxLength(16);
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Name")
+ .HasMaxLength(64);
+
+ b.Property("OrganizationId")
+ .HasMaxLength(64);
+
+ b.Property("PaymentTotal")
+ .HasColumnType("Money");
+
+ b.Property("PaymentTotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("ShippingTotal")
+ .HasColumnType("Money");
+
+ b.Property("ShippingTotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("Status")
+ .HasMaxLength(64);
+
+ b.Property("StoreId")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("SubTotal")
+ .HasColumnType("Money");
+
+ b.Property("SubTotalWithTax")
+ .HasColumnType("Money");
+
+ b.Property("TaxIncluded");
+
+ b.Property("TaxPercentRate")
+ .HasColumnType("decimal(18,4)");
+
+ b.Property("TaxTotal")
+ .HasColumnType("Money");
+
+ b.Property("Total")
+ .HasColumnType("Money");
+
+ b.Property("Type")
+ .HasMaxLength(64);
+
+ b.Property("ValidationType")
+ .HasMaxLength(64);
+
+ b.HasKey("Id");
+
+ b.ToTable("Cart");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.TaxDetailEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("Amount")
+ .HasColumnType("Money");
+
+ b.Property("LineItemId");
+
+ b.Property("Name")
+ .HasMaxLength(1024);
+
+ b.Property("PaymentId");
+
+ b.Property("Rate");
+
+ b.Property("ShipmentId");
+
+ b.Property("ShoppingCartId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LineItemId");
+
+ b.HasIndex("PaymentId");
+
+ b.HasIndex("ShipmentId");
+
+ b.HasIndex("ShoppingCartId");
+
+ b.ToTable("CartTaxDetail");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.AddressEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.PaymentEntity", "Payment")
+ .WithMany("Addresses")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", "Shipment")
+ .WithMany("Addresses")
+ .HasForeignKey("ShipmentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Addresses")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.CartDynamicPropertyObjectValueEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.LineItemEntity", "LineItem")
+ .WithMany("DynamicPropertyObjectValues")
+ .HasForeignKey("LineItemId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.PaymentEntity", "Payment")
+ .WithMany("DynamicPropertyObjectValues")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", "Shipment")
+ .WithMany("DynamicPropertyObjectValues")
+ .HasForeignKey("ShipmentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("DynamicPropertyObjectValues")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.CouponEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Coupons")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.DiscountEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.LineItemEntity", "LineItem")
+ .WithMany("Discounts")
+ .HasForeignKey("LineItemId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.PaymentEntity", "Payment")
+ .WithMany("Discounts")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", "Shipment")
+ .WithMany("Discounts")
+ .HasForeignKey("ShipmentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Discounts")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.LineItemEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Items")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.PaymentEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Payments")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("Shipments")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.ShipmentItemEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.LineItemEntity", "LineItem")
+ .WithMany()
+ .HasForeignKey("LineItemId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", "Shipment")
+ .WithMany("Items")
+ .HasForeignKey("ShipmentId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CartModule.Data.Model.TaxDetailEntity", b =>
+ {
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.LineItemEntity", "LineItem")
+ .WithMany("TaxDetails")
+ .HasForeignKey("LineItemId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.PaymentEntity", "Payment")
+ .WithMany("TaxDetails")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShipmentEntity", "Shipment")
+ .WithMany("TaxDetails")
+ .HasForeignKey("ShipmentId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("VirtoCommerce.CartModule.Data.Model.ShoppingCartEntity", "ShoppingCart")
+ .WithMany("TaxDetails")
+ .HasForeignKey("ShoppingCartId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.cs b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.cs
new file mode 100644
index 000000000..d360755e5
--- /dev/null
+++ b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/20190909080032_AddCartSupportSoftDeletion.cs
@@ -0,0 +1,23 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+namespace VirtoCommerce.CartModule.Data.Migrations
+{
+ public partial class AddCartSupportSoftDeletion : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "IsDeleted",
+ table: "Cart",
+ nullable: false,
+ defaultValue: false);
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "IsDeleted",
+ table: "Cart");
+ }
+ }
+}
diff --git a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/CartDbContextModelSnapshot.cs b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/CartDbContextModelSnapshot.cs
index 9d3c69e5f..5723b3520 100644
--- a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/CartDbContextModelSnapshot.cs
+++ b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Migrations/CartDbContextModelSnapshot.cs
@@ -1,4 +1,4 @@
-//
+//
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
@@ -621,6 +621,8 @@ protected override void BuildModel(ModelBuilder modelBuilder)
b.Property("IsAnonymous");
+ b.Property("IsDeleted");
+
b.Property("IsRecuring");
b.Property("LanguageCode")
diff --git a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Model/ShoppingCartEntity.cs b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Model/ShoppingCartEntity.cs
index 8cc300cc8..67f29d8ad 100644
--- a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Model/ShoppingCartEntity.cs
+++ b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Model/ShoppingCartEntity.cs
@@ -12,7 +12,7 @@
namespace VirtoCommerce.CartModule.Data.Model
{
- public class ShoppingCartEntity : AuditableEntity
+ public class ShoppingCartEntity : AuditableEntity, ISupportSoftDeletion
{
[StringLength(64)]
public string Name { get; set; }
@@ -106,6 +106,8 @@ public class ShoppingCartEntity : AuditableEntity
[StringLength(64)]
public string Type { get; set; }
+ public bool IsDeleted { get; set; }
+
#region NavigationProperties
public virtual ObservableCollection Discounts { get; set; } = new NullCollection();
diff --git a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Repositories/CartDbContext.cs b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Repositories/CartDbContext.cs
index 36529ba86..9478bbc57 100644
--- a/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Repositories/CartDbContext.cs
+++ b/Modules/vc-module-cart/VirtoCommerce.CartModule.Data/Repositories/CartDbContext.cs
@@ -1,10 +1,10 @@
-using EntityFrameworkCore.Triggers;
using Microsoft.EntityFrameworkCore;
using VirtoCommerce.CartModule.Data.Model;
+using VirtoCommerce.Platform.Data.Infrastructure;
namespace VirtoCommerce.CartModule.Data.Repositories
{
- public class CartDbContext : DbContextWithTriggers
+ public class CartDbContext : DbContextWithTriggersAndQueryFiltersBase
{
public CartDbContext(DbContextOptions options)
: base(options)
diff --git a/Modules/vc-module-catalog/VirtoCommerce.CatalogModule.Data/Migrations/20190909081932_AddCatalogSupportSoftDeletion.Designer.cs b/Modules/vc-module-catalog/VirtoCommerce.CatalogModule.Data/Migrations/20190909081932_AddCatalogSupportSoftDeletion.Designer.cs
new file mode 100644
index 000000000..1dc9f904b
--- /dev/null
+++ b/Modules/vc-module-catalog/VirtoCommerce.CatalogModule.Data/Migrations/20190909081932_AddCatalogSupportSoftDeletion.Designer.cs
@@ -0,0 +1,1002 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using VirtoCommerce.CatalogModule.Data.Repositories;
+
+namespace VirtoCommerce.CatalogModule.Data.Migrations
+{
+ [DbContext(typeof(CatalogDbContext))]
+ [Migration("20190909081932_AddCatalogSupportSoftDeletion")]
+ partial class AddCatalogSupportSoftDeletion
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.2.3-servicing-35854")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128)
+ .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
+
+ modelBuilder.Entity("VirtoCommerce.CatalogModule.Data.Model.AssetEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("ItemId")
+ .IsRequired();
+
+ b.Property("LanguageCode")
+ .HasMaxLength(5);
+
+ b.Property("MimeType")
+ .HasMaxLength(128);
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Name")
+ .HasMaxLength(1024);
+
+ b.Property("OuterId")
+ .HasMaxLength(128);
+
+ b.Property("Size");
+
+ b.Property("Url")
+ .IsRequired()
+ .HasMaxLength(2083);
+
+ b.HasKey("Id");
+
+ b.HasIndex("ItemId");
+
+ b.ToTable("CatalogAsset");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CatalogModule.Data.Model.AssociationEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("AssociatedCategoryId");
+
+ b.Property("AssociatedItemId");
+
+ b.Property("AssociationType")
+ .IsRequired()
+ .HasMaxLength(128);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("ItemId")
+ .IsRequired();
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("OuterId")
+ .HasMaxLength(128);
+
+ b.Property("Priority");
+
+ b.Property("Quantity");
+
+ b.Property("Tags")
+ .HasMaxLength(1024);
+
+ b.HasKey("Id");
+
+ b.HasIndex("AssociatedCategoryId");
+
+ b.HasIndex("AssociatedItemId");
+
+ b.HasIndex("ItemId");
+
+ b.ToTable("Association");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CatalogModule.Data.Model.CatalogEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("DefaultLanguage")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("IsDeleted");
+
+ b.Property("ModifiedBy")
+ .HasMaxLength(64);
+
+ b.Property("ModifiedDate");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(128);
+
+ b.Property("OuterId")
+ .HasMaxLength(128);
+
+ b.Property("OwnerId")
+ .HasMaxLength(128);
+
+ b.Property("Virtual");
+
+ b.HasKey("Id");
+
+ b.ToTable("Catalog");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CatalogModule.Data.Model.CatalogLanguageEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CatalogId")
+ .IsRequired();
+
+ b.Property("Language")
+ .HasMaxLength(64);
+
+ b.HasKey("Id");
+
+ b.HasIndex("CatalogId");
+
+ b.ToTable("CatalogLanguage");
+ });
+
+ modelBuilder.Entity("VirtoCommerce.CatalogModule.Data.Model.CategoryEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(128);
+
+ b.Property("CatalogId")
+ .IsRequired()
+ .HasMaxLength(128);
+
+ b.Property("Code")
+ .IsRequired()
+ .HasMaxLength(64);
+
+ b.Property("CreatedBy")
+ .HasMaxLength(64);
+
+ b.Property("CreatedDate");
+
+ b.Property("EndDate");
+
+ b.Property