>백엔드 개발 >C++ >Entity Framework 코드는 어떻게 먼저 일시 삭제 필터링을 구현할 수 있습니까?

Entity Framework 코드는 어떻게 먼저 일시 삭제 필터링을 구현할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-02 21:22:38984검색

How Can Entity Framework Code First Implement Soft Delete Filtering?

Entity Framework Code First를 사용한 일시 삭제 필터링

Entity Framework Code First에서 일시 삭제를 사용하면 엔터티를 표시하여 "삭제"할 수 있습니다. 실제로 데이터베이스에서 제거하는 것이 아니라 삭제된 것으로 간주됩니다. 이는 실수로 인한 삭제를 방지하거나 기록 데이터를 유지하려는 시나리오에 유용합니다.

일시 삭제의 한 가지 과제는 데이터를 검색할 때 일시 삭제된 엔터티를 자동으로 필터링하는 방법입니다. 이는 EntityFramework.DynamicFilters 패키지를 사용하여 달성할 수 있습니다.

EntityFramework.DynamicFilters

EntityFramework.DynamicFilters는 자동으로 적용되는 전역 필터를 생성하기 위한 메커니즘을 제공하는 라이브러리입니다. 쿼리에. 이러한 필터는 탐색 속성을 포함하여 엔터티의 모든 속성에 적용될 수 있습니다.

EntityFramework.DynamicFilters를 사용하려면 다음을 수행해야 합니다.

  1. NuGet에서 패키지를 설치합니다.
  2. DbContext에 다음 줄을 추가하세요. 클래스:
public override int SaveChanges(bool acceptAllChangesOnSuccess)
{
    // Soft delete implementation here
    return base.SaveChanges(acceptAllChangesOnSuccess);
}
  1. DbContext의 OnModelCreating 메서드에서 필터를 정의합니다.
modelBuilder.Filter("IsDeleted", (ISoftDelete d) => d.IsDeleted, false);

이 필터는 다음을 구현하는 엔터티에 대한 모든 쿼리를 보장합니다. ISoftDelete 인터페이스는 IsDeleted가 다음으로 설정된 엔터티를 제외하고 IsDeleted 속성에 대한 WHERE 절을 자동으로 포함합니다. true.

다음 코드를 고려하세요.

public class User : ISoftDelete
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsDeleted { get; set; }
}

public class DbContext : base.DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Filter("IsDeleted", (User u) => u.IsDeleted, false);
    }
}

이 구성을 사용하면 다음 코드는 삭제된 것으로 표시된 모든 사용자를 무시합니다.

var user = dbContext.Users.FirstOrDefault(u => u.Id == 1);

위 내용은 Entity Framework 코드는 어떻게 먼저 일시 삭제 필터링을 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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