Entity Framework Code First를 사용한 일시 삭제 필터링
Entity Framework Code First에서 일시 삭제를 사용하면 엔터티를 표시하여 "삭제"할 수 있습니다. 실제로 데이터베이스에서 제거하는 것이 아니라 삭제된 것으로 간주됩니다. 이는 실수로 인한 삭제를 방지하거나 기록 데이터를 유지하려는 시나리오에 유용합니다.
일시 삭제의 한 가지 과제는 데이터를 검색할 때 일시 삭제된 엔터티를 자동으로 필터링하는 방법입니다. 이는 EntityFramework.DynamicFilters 패키지를 사용하여 달성할 수 있습니다.
EntityFramework.DynamicFilters
EntityFramework.DynamicFilters는 자동으로 적용되는 전역 필터를 생성하기 위한 메커니즘을 제공하는 라이브러리입니다. 쿼리에. 이러한 필터는 탐색 속성을 포함하여 엔터티의 모든 속성에 적용될 수 있습니다.
EntityFramework.DynamicFilters를 사용하려면 다음을 수행해야 합니다.
public override int SaveChanges(bool acceptAllChangesOnSuccess) { // Soft delete implementation here return base.SaveChanges(acceptAllChangesOnSuccess); }
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!