Bob*_*421 6 linq entity-framework
看看这个实体:
class EntityA
{
public int Id { get;set; }
public string Name { get;set; }
public int? ClientId { get; set; }
// Navigation properties:
public ClientEntity? Client { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该实体包含一个可选属性:ClientId。这意味着客户端是可选的。在这种情况下,sql server 数据库中的 ClientId 字段将包含 NULL。
我正在使用外键的导航属性:这是“客户端”属性。当 ClientId 为 null 时,Client 也应该为 null。
这就是为什么我声明:“ClientEntity?” 客户端属性的类型。
但我看到有人在相同的情况下声明“ClientEntity”(不可为空)。但我不明白他们如何在这种情况下操纵空客户端......
任何想法 ?
谢谢
小智 2
对于在为项目启用可空性时也遇到此问题的任何人来说,导航属性不应该为空。
根据微软的说法,
包含对多个相关实体的引用的集合导航应始终不可为 null。空集合意味着不存在相关实体,但列表本身决不应该为空。
https://learn.microsoft.com/en-us/ef/core/miscellaneous/nullable-reference-types
所以编码的解决方案是:
class EntityA
{
public int Id { get;set; }
public string Name { get;set; }
public int ClientId { get; set; }
// Navigation properties:
public ClientEntity Client { get; set; } = null!;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2582 次 |
最近记录: |