1

最初に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 アプリとフィールドの関係が混乱を招く可能性があるため、流暢な構成を使用して明示的にしようとしました。

前述のように、これは違いはなく、考えられるすべての賢明な組み合わせ (およびそうでないものも) を試し、同じ移行を取得するたびに試しました。

さらに情報が必要な場合はお知らせください。

ピート

4

2 に答える 2