最初にEntity Framework 5コードを使用しています...アプリエンティティがあります:
public class App
{
public long Id { get; set; }
public ICollection<Field> Fields { get; set; }
public Field TitleField { get; set; }
}
関連するフィールド エンティティ:
public class Field
{
public long Id { get; set; }
[Timestamp]
public byte[] LastUpdate { get; set; }
public App App { get; set; }
[MaxLength(50)]
public string Identifier { get; set; }
public FieldType Type { get; set; }
public string Label { get; set; }
public int? Length { get; set; }
public bool Required { get; set; }
}
TitleField を App に追加し、0..1 の関係を構成したいと考えています。流暢な構成で HasOptional\WithOptional\Dependant\Principal のさまざまな組み合わせを試しましたが、移行をスキャフォールディングすると、常に次のようになります。
public override void Up()
{
AddColumn("dbo.Apps", "TitleField_Id", c => c.Long());
AddColumn("dbo.Fields", "App_Id1", c => c.Long());
AddForeignKey("dbo.Apps", "TitleField_Id", "dbo.Fields", "Id");
AddForeignKey("dbo.Fields", "App_Id1", "dbo.Apps", "Id");
CreateIndex("dbo.Apps", "TitleField_Id");
CreateIndex("dbo.Fields", "App_Id1");
}
アプリの外部キーがこれを機能させるのに十分すぎるのに、関係の両側に外部キーが必要だと思うのはなぜですか? 1..Many アプリとフィールドの関係が混乱を招く可能性があるため、流暢な構成を使用して明示的にしようとしました。
前述のように、これは違いはなく、考えられるすべての賢明な組み合わせ (およびそうでないものも) を試し、同じ移行を取得するたびに試しました。
さらに情報が必要な場合はお知らせください。
ピート