gpt4 book ai didi

c# - EF 核心 : Any reason to not throw on QueryClientEvaluationWarning

转载 作者:行者123 更新时间:2023-11-30 22:52:28 24 4
gpt4 key购买 nike

EF Core 有 a feature当这部分不能在数据库上执行时,它可以在内存中评估这部分查询。发生这种情况时会记录警告。

可以选择将 EF Core 配置为在发生这种情况时抛出异常

optionsBuilder
.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFQuerying;Trusted_Connection=True;")
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)); // <--

因为在内存中评估程序员打算在数据库中执行的内容可能是一个巨大的 performance issue而且有点不干净恕我直言,我现在正在考虑随时随地使用此异常配置。

我只是想知道是否有充分的理由不抛出异常?我个人更喜欢异常,然后更改要在内存中有意执行的代码(例如,在有问题的语句之前使用 .ToList() )。令我感到奇怪的是,EF 会解决这样的设计缺陷。

但是,我不确定我是否忘记了它最初存在的任何充分理由或可能有必要这样做的任何情况。

最佳答案

不抛出异常的一个很好的理由是当您使用非关系数据库并且您必须在代码中进行数据处理和搜索时。另一种情况是,如果您使用 linq 查询来组合来自多个来源(内存中数据结构、XML、数据库)的数据,并且您希望您只会从这些来源读取数据并在您的代码中进行所有处理。

但是,当您仅针对关系数据库时,您应该始终抛出。

关于c# - EF 核心 : Any reason to not throw on QueryClientEvaluationWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com