0

コードファースト/流暢なAPIを使用して1対(0または1)のテーブル関係を強制しようとしていますが、意図したテーブルは以下のとおりです。

学生は連絡先 (StudentContact) のみを持っている場合と持っていない場合がありますが、すべての連絡先 (StudentContact) には学生が必要です。

StudentID StudentName
1         StudentA
2         StudentB

StudentContactID StudentContact StudentID
1                123456789      1
2                123456789      2

使ってみた

EntityName<Student>().HasOptional(x => x.StudentContact).WithRequired(l => l.Student)

残念ながら、StudentID 列に 1 つの関係が適用されないため、StudentID 列に重複する値が含まれる可能性があります。

参照:エンティティ フレームワーク コードの最初の 1 対 0/1 の関係

4

1 に答える 1

4

1 対 1 のリレーションシップを構成する場合、Entity Framework では、従属 ( StudentContact) の主キーも外部キーである必要があります。あなたが望むものを達成するための適切な方法はこれかもしれませんが、データ注釈を使用しています:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public StudentContact StudentContact { get; set; }
}

public class StudentContact
{
    [Key, ForeignKey("Student")]
    public int StudentId { get; set; }
    public int Contact { get; set; }
    public Student Student { get; set; }
}
于 2015-03-03T13:42:13.603 に答える