抑制 EF 警告的正确方法是什么?
What's the right way to suppress EF warnings?
我想抑制这些警告,但我不知道该怎么做。
您看到的不是警告,而是错误。当诊断消息是警告或错误时,输出会非常清楚地告诉您。您已经为编译器提供了一个错误编号 (6002),并告诉它用该编号抑制警告,但这样的警告并不存在。所以,你只是成功地制造了一个额外的错误
在这种情况下,您试图抑制的消息是一个致命的编译器错误;您唯一的选择是修复您的代码。您 必须 为每个 Entity Framework 对象定义一个主键,否则 Entity Framework 将无法使用它。错误的措辞有点令人困惑,因为它暗示编译器以某种方式 "worked around" 你的问题,但事实并非如此。
有关该特定错误及其修复方法的更多详细信息:
Error 6002: The table/view does not have a primary key defined
你说得对,这些是警告,不是错误。抑制来自编译器的验证警告的最简单方法是禁用 EF 模型的 Validate on Build 属性。为此,请打开您的 .edmx 和 select 背景。打开 Visual Studio 的属性 window 并将构建时验证设置为 false。当您想要验证模型时,只需再次打开模型即可。模型上还有一个右键单击上下文菜单选项以进行验证。
使用 Visual Studio 2019,您可以右键单击错误并抑制它。
这将创建一个 .editorconfig 文件,例如包含以下内容:
dotnet_diagnostics.EF1000.severity = suggestion
更好的办法是自己创建一个 .editorconfig 文件,无论是在解决方案级别还是在项目级别,然后添加 Erik 在他的 post 中提到的规则。如本 中所述,您可以添加一个 EditorConfig 文件,如果您选择 .NET 选项,该文件已经将一些其他规则和良好实践引入您的项目或解决方案中。
从菜单栏中选择 项目 > 添加新项目;或按 Ctrl+Shift+A
Select editorconfig File (.NET)
模板,用于添加预填充了默认 .NET 代码样式、格式和命名约定的 EditorConfig 文件
但是,要完全抑制警告或建议,您应该使用 'none' 而不是 'suggestion'。例如,对于每次方法名称包含“_”时都会显示警告的 CA1707,您需要在 .editorconfig 文件中添加以下条目:
[*.cs]
dotnet_diagnostic.CA1707.severity = none
不过,我很喜欢这条规则。除了在测试项目中应用时,按照惯例以 'Tests.cs' 结尾。然后我可以完善我的规则,以考虑这种情况:
[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none
根据最新规则,我可以找到解决方案级别的 .editorconfig 文件,该文件将仅将该规则应用于测试项目。
我想抑制这些警告,但我不知道该怎么做。
您看到的不是警告,而是错误。当诊断消息是警告或错误时,输出会非常清楚地告诉您。您已经为编译器提供了一个错误编号 (6002),并告诉它用该编号抑制警告,但这样的警告并不存在。所以,你只是成功地制造了一个额外的错误
在这种情况下,您试图抑制的消息是一个致命的编译器错误;您唯一的选择是修复您的代码。您 必须 为每个 Entity Framework 对象定义一个主键,否则 Entity Framework 将无法使用它。错误的措辞有点令人困惑,因为它暗示编译器以某种方式 "worked around" 你的问题,但事实并非如此。
有关该特定错误及其修复方法的更多详细信息:
Error 6002: The table/view does not have a primary key defined
你说得对,这些是警告,不是错误。抑制来自编译器的验证警告的最简单方法是禁用 EF 模型的 Validate on Build 属性。为此,请打开您的 .edmx 和 select 背景。打开 Visual Studio 的属性 window 并将构建时验证设置为 false。当您想要验证模型时,只需再次打开模型即可。模型上还有一个右键单击上下文菜单选项以进行验证。
使用 Visual Studio 2019,您可以右键单击错误并抑制它。 这将创建一个 .editorconfig 文件,例如包含以下内容:
dotnet_diagnostics.EF1000.severity = suggestion
更好的办法是自己创建一个 .editorconfig 文件,无论是在解决方案级别还是在项目级别,然后添加 Erik 在他的 post 中提到的规则。如本
从菜单栏中选择 项目 > 添加新项目;或按 Ctrl+Shift+A
Select
editorconfig File (.NET)
模板,用于添加预填充了默认 .NET 代码样式、格式和命名约定的 EditorConfig 文件
但是,要完全抑制警告或建议,您应该使用 'none' 而不是 'suggestion'。例如,对于每次方法名称包含“_”时都会显示警告的 CA1707,您需要在 .editorconfig 文件中添加以下条目:
[*.cs]
dotnet_diagnostic.CA1707.severity = none
不过,我很喜欢这条规则。除了在测试项目中应用时,按照惯例以 'Tests.cs' 结尾。然后我可以完善我的规则,以考虑这种情况:
[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none
根据最新规则,我可以找到解决方案级别的 .editorconfig 文件,该文件将仅将该规则应用于测试项目。