エンティティのいずれかのリバースナビゲーションに問題があります。Entity Framework Fluent APIとの1対1の関係
私は、次の2つのオブジェクトがあります。
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にリンク2つの列を取得するデータベースを除いて作業に近いのです。 POCOオブジェクトから取得したものを別の列に取得します。Candidate_CandidateId私はmodelBuilderによって作成されたものと想定しています。
私は今は静かです。誰かが何が起こっているかについていくつかの光を当てることができますか?
なぜ追加フィールドを定義しますか [必須] public long CandidateId {get;セット; } これを削除すると問題がなくなります –
あなたの関係はmodelBuilder.Entityである必要があります。().HasOptional(obj => obj.Data).WithRequired(e => e.Candidate); BTW:流暢なAPIと属性を混ぜないようにしてください。 –
tschmit007