关闭 EFCore 中的全局过滤器警告

问题描述 投票:0回答:2

我的一个实体有一个过滤器

 entity.HasQueryFilter(x => !x.IsDeleted);

我不断在日志中收到以下警告,我想将其关闭

实体“Event”定义了全局查询过滤器,并且是与实体“EventCategory”的关系所需的结束。当所需实体被过滤掉时,这可能会导致意外结果。将导航配置为可选,或者为导航中的两个实体定义匹配的查询过滤器。请参阅 https://go.microsoft.com/fwlink/?linkid=2131316 了解更多信息。

entity-framework entity-framework-core
2个回答
23
投票

如果您确定您的实体配置正确并想要关闭该特定警告,您可以使用

DbContextOptionsBuilder.ConfigureWarnings
方法。

假设您使用

DbContext
注册
IServiceCollection
:

using Microsoft.EntityFrameworkCore.Diagnostics;

services.AddDbContext<MyDbContext>(options =>
{
    // Other configuration here...

    options.ConfigureWarnings(builder =>
    {
        builder.Ignore(CoreEventId.PossibleIncorrectRequiredNavigationWithQueryFilterInteractionWarning);
    });
});

请注意,这将消除所有此类警告。


9
投票
modelBuilder.Entity<EventCategory>()
    .HasQueryFilter(t => !t.Event.IsDeleted);

您应该从与事件相关的所有实体中过滤掉它

© www.soinside.com 2019 - 2024. All rights reserved.