我有一個代碼優先的POCO項目,我試圖調整現有的數據庫,以便與EF預期的一致,並給定我的現有模型。EF CTP4:如何判斷EF列是不是身份
我有這些實體:
public class FlaggedDate
{
[Key]
public long scheduledDayID { get; set; }
[Required]
public DateTime date { get; set; }
[StringLength(50)]
[Required]
public string dateStatus { get; set; }
[Required]
public bool isVisit { get; set; }
[Required]
public bool hasAvailableSlots { get; set; }
[Required]
public bool hasInterviewsScheduled { get; set; }
// navigation properties
public ICollection<ScheduledSchool> scheduledSchool { get; set; }
public ICollection<Interview> interviews { get; set; }
public ICollection<PartialDayAvailableBlock> partialDayAvailableBlocks { get; set; }
public Visit visit { get; set; }
public ICollection<Event> events { get; set; }
}
和
public class Visit
{
[Key]
public long flaggedDateScheduledDayID { get; set; }
[Required]
public bool isFullDay { get; set; }
// navigation property
public FlaggedDate flaggedDate { get; set; }
}
這兩者之間的關係是1:0 | 1 - 即FlaggedDate會存在,但它可能會或可能不會有相應的單個訪問對象。
EF認爲,基於此模型,FlaggedDate應該有一個額外的字段visit_flaggedDateScheduledDayID,它可以爲空。我終於明白了原因:它認爲訪問字段flaggedDateScheduledDayID是一個標識列。它不應該是一個身份專欄;它應該是連接到FlaggedDate的外鍵。我認爲它按照約定來做這件事情:我記得閱讀一些東西,在CTP4中,任何單個鍵是int或long的字段都被認爲是一個標識列。
有沒有什麼方法可以告訴EF這不是一個標識列?我試着弄弄Fluent API,但對我來說這是一個謎,並且沒有可用於此的數據註釋。
或者,或者,我有什麼辦法可以擺弄導航屬性來讓它出來嗎?