EF Core возвращает ноль для многих ко многим - PullRequest
0 голосов
/ 03 февраля 2020

Так что мой вариант использования довольно прост, у меня есть автомобиль и аксессуары для него. Теперь я создал 3 таблицы, одну для автомобиля, одну для принадлежностей и таблицу «многие ко многим», как показано ниже: publi c 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; 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, он просто возвращает ноль. Я попытался использовать include в свойстве, но это дало мне ошибку циклической ссылки. Кстати, я понятия не имею, как добавить с помощью EF таблицу «многие ко многим».

Чтобы попытаться получить используемые мной записи: _context.Vehicles.ToList();

Может кто-нибудь возможно, пролить свет на то, почему это не работает.

1 Ответ

0 голосов
/ 03 февраля 2020

1) Создавали ли вы отношения между этими таблицами на SQL Сервере?

2) Использовали ли вы команду scaffold-dbcontext в консоли пакета nuget? Ваша таблица VehicleAccessory выглядит так, что вы не использовали команду scaffold-dbcontext.

3) Используйте приведенный ниже код

_context.Vehicles.Include(x => x.VehicleAccessories).Include("VehicleAccessories.Accessory").ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...