我正在使用 Jet Brains Rider 和 Resharper,当我没有将
Organization
之类的对象声明为 nullable
时,会出现错误。
实际上,它应该可以为空,因为我可能不会将其包含在 EFCore 查询中。
现在我已将其设置为
public Organization? Organization { get; set; }
解决此警告的最佳方法是什么?这里的最佳实践是什么?
可以安全地忽略该警告,因为表达式将由 EF core 转换为 SQL 查询,并且不会由 .NET 运行时实际评估(因此不会抛出
NullReferenceException
)。
因此,
!
(空值宽容)运算符可用于使警告静音,如所示
Where(g => g.Organization!. /* rest of the expression here*/ )
导航属性的可为空性不应该由查询方式决定,而应由受影响数据的关系决定。如果在数据库中,Group
始终有一个
Organization
,则代码应准确反映这一点。您可以通过使用 Group
初始化它来消除
= null!;
实体中的警告。这告诉编译器您了解得更多,并且尽管未初始化,但该属性永远不会为空。请注意,无论如何它仍然可以保留空值。