Можно ли связать таблицу FK с 2 другими PK в рамках сущности? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть корзина для покупок из двух отдельных таблиц.

В одной таблице содержатся отдельные элементы, а в другой - коробки из нескольких элементов.

Я использую ApiController длявставьте товар в корзину, проблема в том, что, когда я вставляю ящик с идентификатором 1, FK в корзине обновляет идентификатор до 1, но нет никаких указаний на то, является ли это предметом или ящиком.

У меня естьпопытался создать несколько FK в таблице корзины для каждого элемента и идентификатора ящика, но сначала код выдавал ошибки о пустых значениях в FK.Я попытался сделать их обнуляемыми, но это вызывает ошибки при попытке объединить таблицы для извлечения данных.

Какова наилучшая практика для отношений, показанных ниже?

enter image description here

Модель тележки:

  public class Cart
  {
    [Key]
    public int RecordID { get; set; }
    public string CartID { get; set; }
    public int ItemID { get; set; }
    public int BoxID { get; set; }
    public int Qty { get; set; }
    public System.DateTime DateCreated { get; set; }

    public Item Item{ get; set; }
    public Box Box { get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }
}

1 Ответ

1 голос
/ 07 марта 2019

Почему вы не рассматриваете коробку как отдельный элемент, и в результате у вас будет одна таблица вместо двух таблиц.

Например.

public class Cart
{
    [Key]
    public int RecordID { get; set; }
    public string CartID { get; set; }
    public int ItemID { get; set; }
    public int Qty { get; set; }
    public System.DateTime DateCreated { get; set; }

    public Item Item{ get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }
}
public class Item
{
    [Key]
    public int ItemID { get; set; }
    .
    .
    .
}

В этом случае вы сможете назначать разные идентификаторы отдельным элементам и элементам коробки.

Вы также можете использовать свойство Qty для тех же элементов в коробке.

...