C# 包含上的EF核心停止递归
我正在使用.NET Core 3和最新的实体框架Core。我目前有3个表,两个普通表和一个链接表。它们的结构如下。我正在尝试为其链接到的车辆单独获取附件,目前正在发生的是,它返回到自身并再次加载车辆对象(因为它引用了链接表)。有人知道如何阻止这种递归发生吗?我不希望C# 包含上的EF核心停止递归,c#,entity-framework,C#,Entity Framework,我正在使用.NET Core 3和最新的实体框架Core。我目前有3个表,两个普通表和一个链接表。它们的结构如下。我正在尝试为其链接到的车辆单独获取附件,目前正在发生的是,它返回到自身并再次加载车辆对象(因为它引用了链接表)。有人知道如何阻止这种递归发生吗?我不希望VehicleAccessory中包含vehicleAccessories数组,这会导致递归 呼叫 var result = _context.Vehicles .Include(x => x.Vehic
VehicleAccessory
中包含vehicleAccessories
数组,这会导致递归
呼叫
var result = _context.Vehicles
.Include(x => x.VehicleAccessories)
.ThenInclude(x => x.Accessory)
.Include(x => x.VehicleImages)
.ThenInclude(x => x.Image)
.ToList();
return result;
通话结果
{
"id": 1,
"registrationNumber": "123456",
"make": "BMW",
"model": "M3",
"year": 2009,
"kilometers": 10030,
"vehicleIdentificationNumber": "1234567890",
"retailPrice": 100000.00,
"costPrice": 50000.00,
"vehicleAccessories": [
{
"vehicleId": 1,
"accessoryId": 1,
"accessory": {
"id": 1,
"description": "NEW ONE",
"vehicleAccessories": []
}
},
{
"vehicleId": 1,
"accessoryId": 2,
"accessory": {
"id": 2,
"description": "NEW ONE",
"vehicleAccessories": [
{
"vehicleId": 2,
"vehicle": {
"id": 2,
"registrationNumber": "123456",
"make": "BMW",
"model": "M3",
"year": 2009,
"kilometers": 10030,
"vehicleIdentificationNumber": "1234567890",
"retailPrice": 100000.00,
"costPrice": 50000.00,
"vehicleAccessories": [],
"vehicleImages": [],
"dtCreated": "2020-02-03T11:21:48.2245986",
"dtUpdated": "2020-02-03T11:21:48.2245554"
},
"accessoryId": 2
}
]
}
}
],
"vehicleImages": [],
"dtCreated": "2020-02-03T11:20:13.8890848",
"dtUpdated": "2020-02-03T11:20:13.8890488"
}
builder.Entity<VehicleAccessory>()
.HasKey(t => new { t.AccessoryId, t.VehicleId });
车辆表:
public class Vehicle
{
[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; } = new List<VehicleAccessory>();
public ICollection<VehicleImage> VehicleImages { get; set; }
public DateTime DTCreated { get; set; }
public DateTime DTUpdated { get; set; }
}
上下文中的关系
{
"id": 1,
"registrationNumber": "123456",
"make": "BMW",
"model": "M3",
"year": 2009,
"kilometers": 10030,
"vehicleIdentificationNumber": "1234567890",
"retailPrice": 100000.00,
"costPrice": 50000.00,
"vehicleAccessories": [
{
"vehicleId": 1,
"accessoryId": 1,
"accessory": {
"id": 1,
"description": "NEW ONE",
"vehicleAccessories": []
}
},
{
"vehicleId": 1,
"accessoryId": 2,
"accessory": {
"id": 2,
"description": "NEW ONE",
"vehicleAccessories": [
{
"vehicleId": 2,
"vehicle": {
"id": 2,
"registrationNumber": "123456",
"make": "BMW",
"model": "M3",
"year": 2009,
"kilometers": 10030,
"vehicleIdentificationNumber": "1234567890",
"retailPrice": 100000.00,
"costPrice": 50000.00,
"vehicleAccessories": [],
"vehicleImages": [],
"dtCreated": "2020-02-03T11:21:48.2245986",
"dtUpdated": "2020-02-03T11:21:48.2245554"
},
"accessoryId": 2
}
]
}
}
],
"vehicleImages": [],
"dtCreated": "2020-02-03T11:20:13.8890848",
"dtUpdated": "2020-02-03T11:20:13.8890488"
}
builder.Entity<VehicleAccessory>()
.HasKey(t => new { t.AccessoryId, t.VehicleId });
builder.Entity()
.HasKey(t=>new{t.AccessoryId,t.VehicleId});
您能显示查询代码吗?@Darem-添加了调用。如果您需要启用延迟加载模式,请查看此博客