1

我只是在做一個3表的小應用程序。EF 4.1中的多對多關係

申請人 職位 ApplicantsPerPosition。

最後一個與其他2個表格有多對多的關係。

但是我使用的代碼第一種方法,但我不知道如果我在做什麼代碼是正確的或不正確。

我在其他2個表中添加了ICollection和ICollection。

這是正確與否?我這樣做是爲了能夠輕鬆地瀏覽關聯對象的屬性,但是我不確定最終是否會將它轉換爲3個表格,正如我在數據庫優先方法中所做的一樣。

示例代碼是在這裏:

public class Position 
    { 
     public int id { get; set; } 
     [StringLength(20, MinimumLength=3)] 
     public string name { get; set; } 
     public int yearsExperienceRequired { get; set; } 
     public virtual ICollection<ApplicantPosition> applicantPosition { get; set; } 
    } 

    public class Applicant 
    { 
     public int ApplicantId { get; set; } 
     [StringLength(20, MinimumLength = 3)] 
     public string name { get; set; } 
     public string telephone { get; set; } 
     public string skypeuser { get; set; } 
     public ApplicantImage photo { get; set; } 
     public virtual ICollection<ApplicantPosition> applicantPosition { get; set; } 

    } 

    public class ApplicantPosition 
    { 
     public virtual ICollection<Position> appliedPositions { get; set; } 
     public virtual ICollection<Applicant> applicants { get; set; } 
     public DateTime appliedDate { get; set; } 
     public int StatusValue { get; set; } 

     public Status Status 
     { 
      get { return (Status)StatusValue; } 
      set { StatusValue = (int)value; } 
     } 


    } 

回答

2

如果你是作爲一個獨立的實體建模的連接表,那麼你有實體和其他2個實體之間的一個一對多的關係。您還需要將主鍵列公開爲鏈接實體中的屬性。

public class Position 
{ 
    public int id { get; set; } 
    [StringLength(20, MinimumLength=3)] 
    public string name { get; set; } 
    public int yearsExperienceRequired { get; set; } 
    public virtual ICollection<ApplicantPosition> applicantPosition { get; set; } 
} 

public class Applicant 
{ 
    public int ApplicantId { get; set; } 
    [StringLength(20, MinimumLength = 3)] 
    public string name { get; set; } 
    public string telephone { get; set; } 
    public string skypeuser { get; set; } 
    public ApplicantImage photo { get; set; } 
    public virtual ICollection<ApplicantPosition> applicantPosition { get; set; } 

} 

public class ApplicantPosition 
{ 
    public int ApplicantId { get; set; } 

    public int PositionId { get; set; } 

    public virtual Position Position { get; set; } 

    public virtual Applicant Applicant { get; set; } 

    public DateTime appliedDate { get; set; } 
    public int StatusValue { get; set; } 

    public Status Status 
    { 
     get { return (Status)StatusValue; } 
     set { StatusValue = (int)value; } 
    } 
}