1
我已經搜索已經回答的問題,但沒有找到我的問題的答案。對我感到羞恥。EF代碼 - 第一個複合「導航」鍵
我有這種情況:
public class Content
{
[Key]
[StringLength(36, ErrorMessage="Must have 36 characters")]
[Required(ErrorMessage="Must have a unique GUID")]
public string GUID { get; set; }
public virtual ICollection<RegionalInfo> RegionalInfo { get; set; }
}
public class RegionalInfo
{
[Key]
public virtual Content Content { get; set; }
[Key]
public virtual Region Region { get; set; }
}
public class Region
{
[Key]
[StringLength(5, ErrorMessage="ID must have 5 characters")]
[Required]
[RegularExpression(@"[a-z]{2}-[A-Z]{2}", ErrorMessage = "ID must be in ISO 639 standard")]
public string ID { get; set; }
public string Country { get; set; }
public string Language { get; set; }
}
但我不能得到這個工作。 EF表示「RegionalInfo沒有Key定義」。
簡而言之,我試圖在包含Content.GUID和Region.ID的這個類「RegionalInfo」上創建一個組合鍵。
對於Contents表中的每一個UNIQUE Content,RegionalInfo表中都存在許多「翻譯」。
這段代碼上爲了使組合鍵工作而需要的上下文類?這是否會避免對集成了組合鍵的單個列進行唯一性檢查,並只檢查兩列? – programad
至於你的第一個問題,我昨天自己試了一下:對於HasKey(),在我的情況下是必要的。沒有它,我仍然得到「RegionalInfo沒有鍵定義」的例外。 HasRequired()線我真的不確定。我從我也有類似的情況(圖像實體,圖庫實體和圖庫中包含圖像集合的ImageGallery實體)複製了該圖像。至於你的第二個問題,在RegionalInfo表中將生成一個包含ContentId和RegionId的主鍵,以便組合是唯一的,而不是單個列。 –