Когда я пытаюсь добавить объект в БД, это появляется ошибка, как следует:ASP.NET MVC5, Объект объект не может ссылаться несколько экземпляров IEntityChangeTracker
Исключение из «System.InvalidOperationException» типа произошел в EntityFramework.dll, но не был обработан в коде пользователя Дополнительная информация: Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker.
Вот мой код:
Order.cs
namespace OnlineMealOrdering.Models
{
public class Order
{
[Key]
public int Id { get; set; }
public virtual User User { get; set; }
public virtual Restaurant Restaurant { get; set; }
public int TotalPrice { get; set; }
public DateTime OrderTime { get; set; }
public string Address { get; set; }
public string UserTEL { get; set; }
public string RestaurantTEL { get; set; }
public string Memo { get; set; }
public virtual ICollection<OrderDetail> OrderDetails { get; set; }
}
}
OrderDetail.cs
namespace OnlineMealOrdering.Models
{
public class OrderDetail
{
[Key]
public int Id { get; set; }
public virtual Order Order { get; set; }
public Dish Dish { get; set; }
public int Price { get; set; }
public int Count { get; set; }
}
}
Cart.cs
public class Cart
{
public Dish Dish { get; set; }
public int Count { get; set; }
}
Контроллеры
public class OrderController : Controller
{
private OnlineMealOrderingContext db = new OnlineMealOrderingContext();
List<Cart> Carts
{
get
{
if (Session["Carts"] == null)
{
Session["Carts"] = new List<Cart>();
}
return (Session["Carts"] as List<Cart>);
}
set { Session["Carts"] = value; }
}
[HttpPost]
public ActionResult Submit(string memo)
{
int user_id = (Session["Account"] as Account).Id;
var user = (from p in db.Users
where p.Id == user_id
select p).FirstOrDefault();
var restaurant = this.Carts.FirstOrDefault().Dish.Restaurant;
int total_price = 0;
foreach (var item in this.Carts)
{
total_price += item.Dish.Price * item.Count;
}
Order order = new Order
{
User = user,
Restaurant = restaurant,
TotalPrice = total_price,
OrderTime = DateTime.Now,
Address = user.Address,
UserTEL = user.TEL,
RestaurantTEL = restaurant.TEL,
Memo = memo,
OrderDetails = new List<OrderDetail>()
};
foreach (var item in this.Carts)
{
order.OrderDetails.Add(new OrderDetail() { Dish = item.Dish, Price = item.Dish.Price, Count = item.Count });
}
db.Orders.Add (заказ);
db.SaveChanges();
this.Carts.Clear();
return RedirectToAction("Index", "Home");
}
}
Это произошло в красном заявлении области.
Что это такое? Карточки? –
@ ErikFunkenbusch, я уже обновляю вопрос. –