如何在实体框架中为外键指定表
本文关键字:实体 框架 | 更新日期: 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指定。