ホームページ >バックエンド開発 >C++ >主目的を定義することで Entity Framework の 1:1 関係のあいまいさを解決するにはどうすればよいですか?

主目的を定義することで Entity Framework の 1:1 関係のあいまいさを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-21 22:52:13517ブラウズ

How to Resolve Ambiguity in Entity Framework's 1:1 Relationships by Defining the Principal End?

Entity Framework 1:1 関係におけるマスターの重要性

Entity Framework では、1 対 1 の関係は 2 つのクラスとそれらの相互排他的なナビゲーション プロパティによって表されます。曖昧さを排除するには、「マスター」を指定する必要があります。プライマリ側とは、最初にレコードを挿入し、関係を維持する関連付け内の側を指します。

この例で発生したエラーは、マスターが指定されていないことが原因です。このコードは、Foo と Boo という 2 つのクラスを定義しており、それぞれに他のクラスを指すナビゲーション プロパティが含まれていますが、どちらの端が優先されるかは指定されていません。

メイン端末の定義

1 対 1 の関係では、マスターが関係を所有し、外部キー制約を管理します。通常、これは関連付けのより安定した長期的な終端となります。データベース設計では、通常、主側は主キーによって識別されます。

例と解決策

指定された例では、Boo インスタンスの存在に依存しないため、Foo クラスが論理マスターです。対照的に、クラス Boo は、関連付けられた Foo なしでは存在できません。

Entity Framework のエラーを解決するには、マスターを明示的に指定する必要があります。これは、データ アノテーションまたは流暢なマッピングを通じて実現できます。データ アノテーションを使用して、Boo クラスを次のように変更します:

<code>public class Boo
{
    [Key, ForeignKey("Foo")]
    public string BooId{get;set;}
    public Foo Foo{get;set;}
}</code>

代わりに、Fluent マッピングを使用します:

<code>modelBuilder.Entity<Foo>()
            .HasOptional(f => f.Boo)
            .WithRequired(s => s.Foo);</code>

マスターを指定することで、エラーを効率的に解決して、Entity Framework で 1 対 1 の関係を定義および管理できます。

以上が主目的を定義することで Entity Framework の 1:1 関係のあいまいさを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。