>백엔드 개발 >C++ >상위 엔터티를 저장할 때 Entity Framework가 하위 엔터티를 저장하지 못하도록 방지하는 방법은 무엇입니까?

상위 엔터티를 저장할 때 Entity Framework가 하위 엔터티를 저장하지 못하도록 방지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-02 13:20:39337검색

How to Prevent Entity Framework from Saving Child Entities When Saving a Parent Entity?

Entity Framework가 하위 개체를 저장하지 못하도록 방지하는 방법

Entity Framework를 사용할 때 엔터티를 저장하면 실수로 연결된 하위 엔터티를 저장하려고 시도할 수 있습니다. 이 문제를 수정하고 지정된 엔터티만 유지하려면 다음 접근 방식을 고려하세요.

EntityState 사용

하위 개체의 EntityState를 변경되지 않음으로 설정하여 Entity Framework에 알릴 수 있습니다. 그대로 두려면:

using (var context = new DatabaseContext())
{
    context.Set<School>().Add(newItem);
    context.Entry(newItem.City).State = EntityState.Unchanged;
    context.SaveChanges();
}

외국어 활용 키

보다 유연한 접근 방식은 외래 키를 활용하는 것입니다. 엔터티를 정의할 때 하위 엔터티의 외래 키 속성과 상위 엔터티의 해당 기본 키 속성을 지정합니다.

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class School
{
    public int Id { get; set; }
    public string Name { get; set; }

    [ForeignKey("City_Id")]
    public City City { get; set; }

    [Required]
    public int City_Id { get; set; }
}

엔티티 삽입 중에 하위 개체의 외래 키 속성을 명시적으로 설정하고 상위 개체의 외래 키 속성을 설정합니다. 탐색 속성을 null로 설정:

    public School Insert(School newItem, int cityId)
    {
        if (cityId <= 0)
        {
            throw new Exception("City ID not provided");
        }

        newItem.City = null;
        newItem.City_Id = cityId;

        using (var context = new DatabaseContext())
        {
            context.Set<School>().Add(newItem);
            context.SaveChanges();
        }
    }

이러한 기술을 따르면 하위 개체의 지속성을 제어하여 원하는 엔터티만 저장하고 잠재적인 무결성을 방지할 수 있습니다. 문제.

위 내용은 상위 엔터티를 저장할 때 Entity Framework가 하위 엔터티를 저장하지 못하도록 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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