我正在获取所有客户,包括他们链接的运营商。 唯一的问题是客户可以在没有操作员的情况下存在。 我遇到的问题是,当我尝试包括操作员时,没有检索到任何没有链接运算符的客户,是否有办法仍然检索我的所有客户,如果您没有运算符,只需让客户中的操作员对象为空?
-获取所有客户方法
public List<Customer> GetAllWithRelations()
{
return Context.Set<Customer>()
.Include(cp => cp.Operator).ToList();
}
-库索姆对象
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public int? OperatorId { get; set; }
[ForeignKey("OperatorId")]
public virtual Operator Operator { get; set; }
}
-运算符对象
public class Operator
{
public int Id { get; set; }
public string Name { get; set; }
}
虽然您没有为此指定标签,但通过使用.Include
,我猜这是一个EntityFramework Core
linq 正在中断。
每当关系未设置为允许空值时,我在 EF 上都遇到过相同的情况。因此,例如,您的映射可能将其显式设置为必需的,或者您没有以某种方式设置它,EF 默认值正在Customer
和Operator
之间建立所需的映射。
只需在构建模型映射的任何地方将其设置为可选,即可获得所需的行为。 请参阅:https://learn.microsoft.com/en-us/ef/core/modeling/required-optional