【发布时间】:2021-04-14 11:50:16
【问题描述】:
尝试使用 Entity Framework 实现在此 answer 上找到的架构时出现错误:
在表“OptionValues”上引入 FOREIGN KEY 约束“FK_OptionValues_Products_ProductId”可能会导致循环或多个级联路径
+---------------+ +---------------+
| PRODUCTS |-----< PRODUCT_SKUS |
+---------------+ +---------------+
| #product_id | | #product_id |
| product_name | | #sku_id |
+---------------+ | sku |
| | price |
| +---------------+
| |
+-------^-------+ +------^------+
| OPTIONS |------< SKU_VALUES |
+---------------+ +-------------+
| #product_id | | #product_id |
| #option_id | | #sku_id |
| option_name | | #option_id |
+---------------+ | value_id |
| +------v------+
+-------^-------+ |
| OPTION_VALUES |-------------+
+---------------+
| #product_id |
| #option_id |
| #value_id |
| value_name |
+---------------+
模型类目前是这样的
public class Option
{
public int Id { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
public string OptionName { get; set; }
public Product Product { get; set; }
}
public class OptionValue
{
public int Id { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
[ForeignKey("OptionId")]
public int OptionId { get; set; }
public string OptionValueName { get; set; }
public Product Product { get; set; }
public Option Option { get; set; }
}
public class ProductSku
{
public int Id { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
public string Sku { get; set; }
public decimal Price { get; set; }
public Product Product { get; set; }
}
public class SkuValue
{
public int Id { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
[ForeignKey("ProductSkuId")]
public int ProductSkuId { get; set; }
[ForeignKey("OptionId")]
public int OptionId { get; set; }
[ForeignKey("OptionValueId")]
public int OptionValueId { get; set; }
public Product Product { get; set; }
public ProductSku ProductSku { get; set; }
public Option Option { get; set; }
public OptionValue OptionValue { get; set; }
}
我在这里做错了什么?我该如何解决?
【问题讨论】:
-
对于连接的
Option和OptionValue对是否允许有不同的ProductId?如果不是,那么OptionValue可能不应该有对Product的 FK -
@NeilW 如果搜索“可能导致循环或多个级联路径”,这又是大量类似的重复:stackoverflow.com/…
-
您的 FK 属性根本没有正确定义,您必须具有覆盖 FK 的 FluentNotation,您应该在帖子中包含此配置。
标签: c# entity-framework entity-framework-core