我在我的一個實體上反向導航時遇到問題。與實體框架Fluent API一對一的關係
我有以下兩個對象:
public class Candidate
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateId { get; set; }
....
// Reverse navigation
public virtual CandidateData Data { get; set; }
...
// Foreign keys
....
}
public class CandidateData
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateDataId { get; set; }
[Required]
public long CandidateId { get; set; }
// Foreign keys
[ForeignKey("CandidateId")]
public virtual Candidate Candidate { get; set; }
}
現在CandidateData對象上我的外鍵導航工作正常。我無法獲得候選對象的反向導航工作(如果甚至可能的話)。
這是我OnModelCreating功能:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Candidate>()
.HasOptional(obj => obj.Data)
.WithOptionalPrincipal();
base.OnModelCreating(modelBuilder);
}
這是接近,除了在數據庫中的工作,我得到鏈接到CandidateId兩列。我從POCO對象中獲得一個我得到的另一列Candidate_CandidateId,我假設它是由modelBuilder創建的。
我現在安靜地迷失了。有人可以澄清一下發生了什麼嗎?
爲什麼要定義像 這樣的附加字段[必須] public long CandidateId {get;組; } 刪除它,你的問題將會消失 – 2013-02-11 10:20:45
我認爲你的關係應該是modelBuilder.Entity().HasOptional(obj => obj.Data).WithRequired(e => e.Candidate);順便說一句:儘量不要混合流利的api和屬性。 –
tschmit007
2013-02-11 10:38:29