ホームページ > バックエンド開発 > C++ > Entity Framework 1:1 リレーションシップでプリンシパル エンドを定義するにはどうすればよいですか?

Entity Framework 1:1 リレーションシップでプリンシパル エンドを定義するにはどうすればよいですか?

DDD
リリース: 2025-01-21 22:41:11
オリジナル
958 人が閲覧しました

How Do I Define the Principal End in Entity Framework 1:1 Relationships?

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 属性は BooIdBoo に明示的にリンクし、暗黙的に Foo を主要エンティティにします。Foo

主目的を明確に定義することで、Entity Framework は挿入オーダーを正しく管理し、1 対 1 の関係におけるデータの一貫性を維持します。

以上がEntity Framework 1:1 リレーションシップでプリンシパル エンドを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート