現在、次のクラスがあります。
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」に設定するとします。そのアイテムをいくつかの「チケット」に追加します。つまり、「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);
}
}
}