我有一組四個POCO對象需要引用自己這樣說:設置像第一次在EF代碼引用外鍵
自由職業者可以有多個客戶
客戶可以有多個項目
項目可以有多個故事。
我想要確定的一點是,自由職業者開始時沒有客戶,客戶開始時沒有項目,項目開始時沒有任何故事,所以我猜他們需要是空的?
另一方面的情況恰恰相反,一個故事需要一個項目,項目需要一個客戶,而一個客戶需要一個自由職業者。
我只想看看當我創建模型(onModelCreating覆蓋)時是否有任何需要做的事情來確保這是發生的關係。
這裏是我的對象:
public class Freelancer
{
public int ID { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string CompanyName { get; set; }
public string Avatar { get; set; }
public Address FreelancerAddress { get; set; }
public ICollection<Client> Clients { get; set; }
}
public class Client
{
public int ID { get; set; }
public string Name { get; set; }
public Address ClientAddress { get; set; }
public string Logo { get; set; }
public ICollection<Project> Projects { get; set; }
}
public class Project
{
public int ID { get; set; }
public string Name { get; set; }
public string Summary { get; set; }
public string Description { get; set; }
public ICollection<Story> Stories { get; set; }
}
public class Story
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public decimal Duration { get; set; }
public bool Billable { get; set; }
public string Notes { get; set; }
}
我明白EF自動做一些事情,我只是問是否有更多我需要做,以確保我有我想要的關係。由於
喜歡最後一部分,只是一個澄清。如果我有一個客戶有一個自由職業者,然後有一個名爲FreelancerId的財產,EF會認識到,作爲FK沒有任何明確的設置? – ledgeJumper
@davidisawesome:是的,因爲約定:*如果有一個名爲XYZ('Freelancer')的導航引用將關鍵屬性DEF('ID')作爲目標類ABC(在這種情況下也是'Freelancer')和一個與目標類('int')中的鍵屬性具有相同類型的標量屬性,以及由導航屬性的名稱和目標類的關鍵屬性('Freelancer' +'ID' ='FreelancerID')組成的名稱,然後這個標量屬性被認爲代表外鍵。*(whew!)如果你想將名字改爲例如'FreelanceCode',你需要註釋或者Fluent API。 – Slauma
很好的解釋。非常感謝你 – ledgeJumper