2014-10-27 72 views
0

我有一個候選人可以(或不可以)有很多JobTypes,我期望CandidateJobTypes的中間表。實體框架代碼首先從零到多

這是一個零對多的關係。

這將如何與實體框架代碼建模?

模型

public class Candidate 
{ 
    [Required] 
    public long CandidateId { get; set; } 

    public ICollection<CandidateJobType> CandidateJobTypes { get; set; } 
} 

public class CandidateJobType 
{ 
    public long Id { get; set; } 

    public long CandidateId { get; set; } 

    public virtual Candidate Candidate { get; set; } 

    public long JobTypeId { get; set; } 

    public virtual JobType JobType { get; set; } 
} 

public class JobType 
{ 
    public long Id { get; set; } 

    [Required] 
    public string Text { get; set; } 

    public long? ParentJobTypeId { get; set; } 

    public virtual JobType ParentJobType { get; set; } 
} 

OnModelCreating

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    // not sure what goes in here 
} 

回答

1

定義它像一對多。沒人在乎收藏品是空的。

modelBuilder.Entity<CandidateJobType>() 
    .HasRequired(m => m.Candidate) 
    .WithMany(m = m.CandidateJobTypes); 
1

爲什麼你需要在OnModelCreating什麼?你遵循慣例很好。一切都應該正常工作

+0

我收到以下錯誤時,有沒有在OnModelCreating,我要儘量節省: 「System.InvalidOperationException」類型的第一次機會異常出現在EntityFramework.dll 其他信息:類型的對象'System.Collections.ObjectModel.Collection'1 [[Temps.Models.CandidateJobType,Temps,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]'不能從類型的EntityReference的Value屬性中設置或刪除'Temps.Models.CandidateJobType'。 – Burt 2014-10-27 20:49:00