У меня проблемы с кодовым ключом ForeignKey. У меня есть продукт, как описано ниже, и я пытаюсь создать новый LineItem с этим существующим продуктом. Однако, когда я сохраняю изменения в моем контексте, он создает совершенно новый Продукт, но дублирует тот, который я использовал изначально, за исключением того, что идентификатор является новым (новая запись в БД теперь).
Вот где я добавляю новую позицию:
public void AddItem(Product item) {
// checking item.Id here will return 100
var lineItem = new LineItem
{
CartId = this.Id,
Product = item,
ProductId = item.Id,
Quantity = 1
};
_db.LineItems.Add(lineItem);
_db.SaveChanges();
// checking lineItem.Id here returns 101
// also checking item.Id here now also returns 101
this.LineItems.Add(lineItem);
}
public class LineItem {
[Key]
[Required]
public int Id { get; set; }
[Required]
public int CartId { get; set; }
[Required]
public int ProductId { get; set; }
[Required]
public int Quantity { get; set; }
[ForeignKey("CartId")]
public virtual Cart Cart { get; set; }
[ForeignKey("ProductId")]
public virtual Product Product { get; set; }
}
Почему он создает новый продукт?