Entity Framework 1:1 関係: 主目的の定義
Entity Framework の 1 対 1 の関係では、データベースの整合性にとって、プリンシパル エンティティと依存エンティティを正しく識別することが重要です。 主要なエンティティは独立して存在し、最初に挿入されます。依存エンティティはプリンシパルに依存し、それを参照します。 主終了を定義しないと、例に示したようなエラーが発生し、Entity Framework が挿入順序を決定できません。
主体エンティティの特定
主要エンティティは、依存エンティティなしでも存在できるエンティティです。 通常、主キーを保持し、関係における「親」として機能します。 エンティティ「Boo」が外部キーを介して「Foo」を参照するシナリオでは、通常、「Boo」が依存エンティティであり、「Foo」がプリンシパルです。
プリンシパルエンドの指定
「プリンシパル エンドが定義されていません」エラーを解決するには、Entity Framework モデル内で Fluent API またはデータ アノテーションを使用します。
流暢な API:
このアプローチでは、コードを使用して関係を定義します。
<code class="language-csharp">modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
このコード スニペットは、Foo
を主要エンティティとして指定します。 HasOptional
は、Foo
エンティティが関連付けられた Boo
エンティティを持つ場合と持たない場合があることを示し、WithRequired
は、Boo
エンティティが関連付けられた エンティティを持たなければならないFoo
ことを指定します。 >
データ注釈:
このメソッドはエンティティ クラス内の属性を使用します:
<code class="language-csharp">public class Boo { [Key, ForeignKey("Foo")] public string BooId { get; set; } public Foo Foo { get; set; } }</code>
の ForeignKey
属性は BooId
を Boo
に明示的にリンクし、暗黙的に Foo
を主要エンティティにします。Foo
以上がEntity Framework 1:1 リレーションシップでプリンシパル エンドを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。