如何在 EF Core 中包含可为 null 的对象,然后包含另一个可为 null 的对象?

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

我正在使用 Jet Brains Rider 和 Resharper,当我没有将

Organization
之类的对象声明为
nullable
时,会出现错误。

实际上,它应该可以为空,因为我可能不会将其包含在 EFCore 查询中。

现在我已将其设置为

public Organization? Organization { get; set; }

我面临的问题是:

解决此警告的最佳方法是什么?这里的最佳实践是什么?

c# .net entity-framework .net-core entity-framework-core
2个回答
0
投票

可以安全地忽略该警告,因为表达式将由 EF core 转换为 SQL 查询,并且不会由 .NET 运行时实际评估(因此不会抛出

NullReferenceException
)。

因此,

!
(空值宽容)运算符可用于使警告静音,如

所示
Where(g => g.Organization!. /* rest of the expression here*/ )

0
投票

导航属性的可为空性不应该由查询方式决定,而应由受影响数据的关系决定。如果在数据库中,Group 始终有一个

Organization
,则代码应准确反映这一点。
您可以通过使用 

Group

初始化它来消除

 = null!;
实体中的警告。这告诉编译器您了解得更多,并且尽管未初始化,但该属性永远不会为空。请注意,无论如何它仍然可以保留空值。
    

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