是否可以映射具有一个自动递增的标识索引的实体以及将其链接到另一个表的外键?
public class Item
{
public int ItemID { get; set; }
[StringLength(20)]
public string Barcode { get; set; }
[StringLength(50)]
public string Name { get; set; }
[StringLength(50)]
public string Description { get; set; }
public decimal Price { get; set; }
[ForeignKey("ItemCategory")]
public string CatID { get; set; }
public virtual ItemCategory ItemCategory { get; set; }
}
public class ItemCategory
{
// This should be the identity index
public int ItemCategoryID { get; set; }
// This should be the foreign key
public string CatID { get; set; }
public string Name { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
我看到了这个answer - 我应该用modelbuilder配置我的表吗?
答案 0 :(得分:1)
Item
中的外键必须指向ItemCategory
中的主键。 EF中的FK与数据库中的FK完全相同。这意味着FK必须指向主体中具有唯一值的属性。问题是EF不支持唯一索引/约束,因此实现唯一性的唯一方法是主键。
因此您无法将FK指向CatID
,除非它是主键的一部分,但在这种情况下,您将拥有包含ItemCategoryID
和CatID
的复合键以及您的Item类将必须包含它们以形成正确的FK。