У меня есть две таблицы, Product
& ProductCategory
. Когда я делаю add-migration
в консоли диспетчера пакетов, все в порядке, но когда я запускаю update-database
, я получаю сообщение об ошибке, которое не имеет значения:
Введение ограничения FOREIGN KEY «FK_ProductCategories_Products_ProductId» в таблице «ProductCategories» может привести к возникновению циклов или нескольких каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, либо измените другие ограничения FOREIGN KEY. Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки
Отличие этого вопроса от других заключается в том, что в моей таблице ProductCategory
нет внешнего ключа.
ProductCategory.cs
public class ProductCategory : DomainModel<int>
{
[Required, StringLength(256)]
public string Name { get; set; }
[MaxLength]
public string Description { get; set; }
[Required]
[DefaultValue(false)]
public bool VisibleToCustomerPublicAccount { get; set; }
[Required]
[DefaultValue(true)]
public bool RequireApproval { get; set; }
public string Thumbnail { get; set; }
[Required]
[DefaultValue(false)]
public bool Inactive { get; set; }
}
Product.cs
[Table("Products")]
public class Product : DomainModel<int>
{
public int ProductCategoryId { get; set; }
[ForeignKey("ProductCategoryId")]
public virtual ProductCategory ProductCategory { get; set; }
[Required, StringLength(256)]
public string Title { get; set; }
[Required, DefaultValue(false)]
public bool AllowEdit { get; set; }
[StringLength(50)]
public string ItemCode { get; set; }
[StringLength(50)]
public string CustomerCode { get; set; }
public int? SupplierId { get; set; }
[ForeignKey("SupplierId")]
public virtual Supplier Supplier { get; set; }
[Column(TypeName = "numeric(5,2)")]
public decimal SalesTaxRate { get; set; }
public int? PressId { get; set; }
[ForeignKey("PressId")]
public virtual Press Press { get; set; }
[MaxLength]
public string Thumbnail { get; set; }
[MaxLength]
public string Description { get; set; }
[MaxLength]
public string Artwork { get; set; }
[MaxLength]
public string Colour { get; set; }
[MaxLength]
public string Delivery { get; set; }
[MaxLength]
public string Material { get; set; }
[MaxLength]
public string Finishing { get; set; }
[MaxLength]
public string Proofs { get; set; }
[MaxLength]
public string Packing { get; set; }
[MaxLength]
public string Notes { get; set; }
[MaxLength]
public string TermsAndInstructions { get; set; }
[StringLength(128)]
public string ShortDescription { get; set; }
[MaxLength]
public string ItemDescription { get; set; }
[MaxLength]
public string PrintReadyFile { get; set; }
[Required, DefaultValue(false)]
public bool VisibleToCustomerPublicAccount { get; set; }
[Required, DefaultValue(false)]
public bool ShowShortDescription { get; set; }
[Required, DefaultValue(false)]
public bool ShowItemDescription { get; set; }
[Required, DefaultValue(false)]
public bool ShowPriceStartFrom { get; set; }
[Required, DefaultValue(false)]
public bool ShowPriceList { get; set; }
[Required, DefaultValue(false)]
public bool ShowPriceSubtotalTax { get; set; }
[Required, DefaultValue(false)]
public bool ShowPrintReadyFile { get; set; }
[Required, DefaultValue(false)]
public bool AllowUserToUploadArtworkFile { get; set; }
public int NumberOfUploadBoxes { get; set; }
[Required, DefaultValue(false)]
public bool MakeFirstFileUploadMandatory { get; set; }
[Required, DefaultValue(false)]
public bool ShowStock { get; set; }
[Required, DefaultValue(false)]
public bool ShowSoldInPacks { get; set; }
[Required, DefaultValue(false)]
public bool AllowGroupRun { get; set; }
[Required, DefaultValue(false)]
public bool ShowCustomerCode { get; set; }
[Required ,DefaultValue(false)]
public bool ShowItemCode { get; set; }
[Required, DefaultValue(false)]
public bool HidePricesOfOptions { get; set; }
[Required, DefaultValue(false)]
public bool QuickAddFunctionEnabled { get; set; }
}
Я видел много решений по таким вопросам, но решения не работают, потому что в таблице ProductCategory
нет ключа.