c# - EF Core 为多对多返回 null
问题描述
所以我的用例非常简单,我有车辆和车辆配件。现在我创建了 3 个表,一个用于车辆,一个用于附件和一个多对多表,如下所示:公共类车辆
车辆表
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string RegistrationNumber { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public int Kilometers { get; set; }
public string VehicleIdentificationNumber { get; set; }
public decimal RetailPrice { get; set; }
public decimal CostPrice { get; set; }
public ICollection<VehicleAccessory> VehicleAccessories { get; set; }
public ICollection<VehicleImage> VehicleImages { get; set; }
public DateTime DTCreated { get; set; }
public DateTime DTUpdated { get; set; }
}
附件桌
public class Accessory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Description { get; set; }
public ICollection<VehicleAccessory> VehicleAccessories { get; set; }
}
链接表
public class VehicleAccessory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public long VehicleId { get; set; }
public Vehicle Vehicle { get; set; }
public long AccessoryId { get; set; }
public Accessory Accessory { get; set; }
}
现在我手动向数据库添加了一个条目以链接附件和车辆表,但如果我查询车辆表以获取 VehicleAccessories 属性,它不会被识别,它只返回 null。我尝试在属性上使用 include,但它给了我一个循环引用错误。附带说明一下,我不知道如何使用 EF 添加到多对多表中。
尝试获取我正在使用的记录:
_context.Vehicles.ToList();
有人可以解释为什么这不起作用。
解决方案
1)您是否在 SQL Server 中创建了这些表之间的关系?
2)你在nuget包控制台中使用了scaffold-dbcontext命令吗?您的 VehicleAccessory 表看起来像您没有使用 scaffold-dbcontext 命令。
3)使用下面的代码
_context.Vehicles.Include(x => x.VehicleAccessories).Include("VehicleAccessories.Accessory").ToList();
推荐阅读
- python-3.x - 在 PyTorch 中训练具有多个学习率的模型
- javascript - 类导出为单例时如何在另一个方法中调用方法
- javascript - 从控制台运行脚本但从 Bookmarklet 打印变量?
- powershell - Powershell 中的添加历史记录有哪些用例?
- r - 用getOptionChain理解quantmod下载的代码
- python - 使用没有“输入”html 的 Python Selenium 上传文件
- xml - 使用 XSLT 正确遍历 XML
- c - 在 Unix 中使用文件重定向后,如何重新定义标准输入以指向控制台?
- spring-boot - 在 doOnError 中找不到订阅者上下文
- javascript - JSON的数组键值