EF5 では、コード ファーストのアプローチと流暢な API を使用して、他のテーブルの主キーではないキーに基づいてナビゲーション プロパティ (多対 1) を作成するにはどうすればよいでしょうか?
私のデータベースモデルはそのままで、変更できません:
- TableFoo1
- Foo1ID int (キー)
- Field1 int
- 値の varchar
- TableFoo2
- Foo2ID int (キー)
- Field1 int
- 値の varchar
- テーブルバー
- BarID int (キー)
- Field1 int
- 値の varchar
これらのエンティティが必要です:
public class Foo1
{
public int Foo1ID { get; set; }
public int BarID { get; set; } //It corresponds Bar.ID
public string Value { get; set; }
public Bar Bar { get; set; }
}
public class Foo2
{
public int Foo2ID { get; set; }
public int BarID { get; set; } //It corresponds to Bar.Field1, NOT Bar.ID
public string Value { get; set; }
public Bar Bar { get; set; }
}
public class Bar
{
public int ID { get; set; }
public int Field1 { get; set; }
public string Value { get; set; }
}
これが私の地図です(2番目のものは不完全なものです):
public class Foo1Map : EntityTypeConfiguration<Foo1>
{
public Foo1Map()
{
this.HasKey(e => e.Foo1ID);
// Links to Bar's Primary Key, yay, it's easy.
this.HasRequired(e => e.Bar).WithMany().HasForeignKey(e => e.BarID);
}
}
public class Foo2Map : EntityTypeConfiguration<Foo2>
{
public Foo2Map()
{
this.HasKey(e => e.Foo2ID);
// No clues of how to links to Bar's other unique column, but not primary key.
this.HasRequired(e => e.Bar).WithMany()........?
}
}
public class BarMap : EntityTypeConfiguration<Bar>
{
public BarMap()
{
this.HasKey(e => e.BarID);
}
}