>백엔드 개발 >C++ >Entity Framework의 1:1 관계에서 주요 목적을 어떻게 정의합니까?

Entity Framework의 1:1 관계에서 주요 목적을 어떻게 정의합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-21 22:36:11952검색

How to Define the Principal End in Entity Framework's 1:1 Relationships?

Entity Framework 1:1 관계의 마스터 측 정의

주 터미널은 무엇인가요?

1:1 관계에서는 한 엔터티를 마스터로 지정하고 다른 엔터티를 슬레이브로 지정해야 합니다. 마스터는 관계를 소유하거나 관계 유지를 담당하는 개체이고, 슬레이브는 마스터 개체의 존재에 의존합니다.

코드 오류 분석

Entity Framework에서 발생하는 오류는 메인 측에서 Foo와 Boo의 관계를 명확하게 정의하지 않았기 때문에 발생합니다. Entity Framework에서는 하위 엔터티의 외래 키로 사용될 엔터티의 기본 키를 결정하기 위해 이 사양이 필요합니다.

마스터와 슬레이브의 1:1 관계

귀하의 코드에서 Foo와 Boo의 관계는 일대일 관계입니다. 마스터를 식별하는 방법은 다음과 같습니다.

  • 메인 엔드: 독립적으로 존재할 수 있는 엔드, 즉 관계를 생성하거나 유지하는 주체입니다.
  • 슬레이브 엔드: 마스터 엔드에 의존하는 엔드, 즉 마스터 엔드가 있어야만 존재할 수 있는 엔터티.

귀하의 예에서 Foo는 Boo 엔터티와 독립적으로 존재할 수 있으므로 마스터가 되어야 합니다. 반면에 Boo는 Foo 기본 ​​키를 데이터베이스에 삽입해야 하기 때문에 Foo에 의존합니다.

기본 터미널 구성

Entity Framework에서 1:1 관계의 마스터 측을 구성하는 방법에는 두 가지가 있습니다.

유창한 매핑:

<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가 관계를 소유하고 Boo는 해당 Foo 레코드가 있는 경우에만 존재할 수 있음을 지정합니다.

위 내용은 Entity Framework의 1:1 관계에서 주요 목적을 어떻게 정의합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.