Entity Framework 1:1 関係におけるマスター側の定義
メイン端末とは何ですか?
1:1 の関係では、一方のエンティティをマスターとして指定し、もう一方のエンティティをスレーブとして指定する必要があります。マスターは関係を所有するエンティティ、または関係を維持する責任を負うエンティティですが、スレーブはマスター エンティティの存在に依存します。
コードエラー分析
Entity Framework で発生しているエラーは、メイン側で Foo と Boo の関係が明確に定義されていないことが原因で発生します。 Entity Framework では、どのエンティティの主キーを下位エンティティの外部キーとして使用するかを決定するために、この仕様が必要です。
1 対 1 の関係のマスターとスレーブ
コードでは、Foo と Boo の関係は 1 対 1 の関係です。マスターを識別する方法は次のとおりです:
あなたの例では、Boo エンティティから独立して存在できるため、Foo がマスターになる必要があります。一方、Boo はデータベースに Foo 主キーを挿入する必要があるため、Foo に依存します。
メインターミナルを構成します
Entity Framework で 1:1 関係のマスター側を構成するには、2 つの方法があります。
流暢なマッピング:
<code class="language-csharp">modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
データ注釈:
<code class="language-csharp">public class Foo { [Key] public string FooId { get; set; } public Boo Boo { get; set; } } public class Boo { [Key, ForeignKey("Foo")] public string BooId { get; set; } public Foo Foo { get; set; } }</code>
マスターを定義することで、Foo が関係を所有し、対応する Foo レコードが存在する場合にのみ Boo が存在できることを指定します。
以上がEntity Framework の 1:1 リレーションシップでプリンシパル エンドを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。