Отключить фильтры запросов softDelete для свойств навигации - PullRequest
0 голосов
/ 08 июля 2019

Я использую Ef Core 2.1, в котором я включил фильтр запросов мягкого удаления.

В некоторых случаях я хочу получить от сущности свойство навигации мягкого удаления, но не смог получитьданные (свойство навигации имеет значение null, поскольку оно было мягко удалено).

Я использовал этот doc (который был написан в 2017 году) в качестве ссылки, и указано, что

Фильтры не могут содержать ссылки на свойства навигации.

Я хочу знать, есть ли способ включить такое поведение.

public class Form {

    public int Id { get; set; }

    public virtual Sprint Sprint {get; set;}
}

public class Sprint: ISoftDeleteable {

    public int Id { get; set; }

    public string Name {get; set;}
}

// Indicates that every model that implements this interface should use soft delete.
public interface ISoftDeleteable
{ 

}

 // Both statements have returned null.
 Sprint sprint = applicationDbContext.Forms.FirstOrDefault(f => f.Id == 1).Sprint;
 Sprint sprint = applicationDbContext.Forms.IgnoreQueryFilters().FirstOrDefault(f => f.Id == 1).Sprint;

В качестве примечанияЯ хотел бы заявить, что я использую ленивый загрузочный прокси в StartUp.cs

services.AddDbContext<ApplicationDbContext>(options => 
    options.UseLazyLoadingProxies().UseSqlServer(connectionString));

Вместо использования «Include ()» и «ThenInclude ()», потому что моя модель более сложна, чемпример приведен здесь.Использование include сделает код более сложным и не поддерживаемым.

1 Ответ

1 голос
/ 08 июля 2019

попробуйте

var data = DbContext.Set<Table>().IgnoreQueryFilters().ToList();

или

var data = DbContext.TableName.IgnoreQueryFilters().ToList();
...