0

我目前有以下课程:

public class Ticket
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }

    public int ClientId { get; set; }
    public virtual Client Client { get; set; }
    public virtual ICollection<Item> Items { get; set; }

    public Ticket()
    {
        Items = new List<Item>();
    }

}

public class Client
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual ICollection<Ticket> Tickets { get; set; }
}

public class Item
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public double Price { get; set; }

    public virtual ICollection<Ticket> Tickets { get; set; }
}

我的问题/问题如下,假设我创建了一个新项目:“Item1”并将其价格设置为“3.00”,我将该项目添加到一些“Tickets”中,即“Ticket1”:“Item1”,“ 3.00"; “Ticket2”:“Item1”、“3.00”等。如果在将这些项目添加到门票后,我将“Item1”的价格更改为“4.00”,它会更改我已经创建的门票的价格,我怎么能拥有它仅更改价格更改后创建的票的价格吗?

这是我的票务控制器:

        [HttpPost]
    public ActionResult Create(TicketViewModel ticketViewModel)
    {
        if (ModelState.IsValid)
        {
            var ticket = new Ticket();
            ticket = ticketViewModel.Ticket;
            AddOrUpdateItems(ticket, ticketViewModel.Item);
            context.Tickets.Add(ticket);
            context.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(ticketViewModel);
    }

   private void AddOrUpdateItems(Ticket ticket, ICollection<AssignedItem> assignedItems)
    {
        foreach (var assignedItem in assignedItems)
        {
            if (assignedItem.Assigned)
            {
                var item = context.Items.Find(assignedItem.ItemId);
                ticket.Items.Add(item);
            }
        }
    }
4

0 回答 0