如何在实体框架中为外键指定表

本文关键字:实体 框架 | 更新日期: 2023-09-27 18:29:50

我通读过的教程中的所有示例都只显示了2个表,所以我对在下面的场景中该怎么做感到困惑。

假设我们有3个类:

public class Product
    {
        public int id { get; set; }
        public string name { get; set; }
        public string skuA { get; set; }
        public string skuB { get; set; }
        public virtual SupplierA supplierA { get; set; }
        public virtual SupplierB supplierB { get; set; }
    }
public class Supplier A
    {
        public int id { get; set; }
        public string name { get; set; }
        public string sku { get; set; }
        public int price { get; set; }
    }
public class Supplier B
    {
        public int id { get; set; }
        public string name { get; set; }
        public string sku { get; set; }
        public int price { get; set; }
    }

如果我们需要加入适当的产品sku字段,那么使用我在教程中看到的数据注释,它最终看起来是这样的:

[ForeignKey("sku")]
public string skuA { get; set; }
[ForeignKey("sku")]
public string skuB { get; set; }

实体框架如何知道我们正在为哪个外部"sku"字段进行注释?是否每个外键都必须以不同的名称命名?我想如果我们有一百个供应商,这会变得很尴尬。

是否有一些额外的参数或标记来处理此问题?任何建议都很感激,因为我觉得这很困惑。

如何在实体框架中为外键指定表

我误解了外键属性的用途。若不遵循命名约定,它将在当前类上定义键。

我被卡住了,因为我收到的错误消息说我需要使用annotation或fluent api,但它真正的意思是我必须使用fluent api,因为我想要的关系无法用annotation指定。