데이터베이스에 저장하기 전에 엔티티를 업데이트 할 때의 문제를 해결하고 이상한 동작이 발생합니다.Entity Framework의 이상한 엔터티 업데이트 코드 우선
ASP.NET MVC 3 웹 응용 프로그램에서 Entity Framework 4.1 코드 우선을 사용하고 있습니다. 여기 모델입니다 :
public class Order
{
public int OrderId { get; set; }
public int CarId { get; set; }
public DateTime BeginRentDate { get; set; }
public DateTime EndRentDate { get; set; }
public decimal RentPrice { get; set; }
public virtual Car Car { get; set; }
}
public class Car
{
public int CarId { get; set; }
public string Brand { get; set; }
public string Model { get; set; }
public string NumberPlate { get; set; }
public decimal RentPrice { get; set; }
}
각 차마다 RentPrice가 있습니다. 이 가격은 주문을 만들 때 주문의 RentPrice로 복사해야합니다. 차는 내가 가격 값을 복사 할 Order.RentPrice 여기 0
그래서 처음에 사용자가 선택하는 것입니다 : 그것은 실체가 유효성 검사 오류가있는 SaveChanges
에 오류로 인해 작동하지 않습니다
[HttpPost]
public ActionResult Create(Order order)
{
order.RentPrice = _context.Cars.Find(order.CarId).RentPrice;
if (ModelState.IsValid)
{
_context.Orders.Add(order);
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(order);
}
. 승인. 먼저 UpdateModel(order);
으로 전화를 걸어 값을 변경해야합니다.
그래서 내가 가지고있는 것. 근무 코드 :
_context.Orders.Add(order);
UpdateModel(order);
order.RentPrice = 777;
_context.SaveChanges();
하지 작업 코드 :
_context.Orders.Add(order);
UpdateModel(order);
order.RentPrice = _context.Cars.Find(order.CarId).RentPrice;
_context.SaveChanges();
작동 코드는 (!) :
_context.Orders.Add(order);
UpdateModel(order);
var t = (double)_context.Cars.Find(order.CarId).RentPrice;
order.RentPrice = (decimal)t;
_context.SaveChanges();
누군가는 설명 할 수, 무슨 일이야하세요? 특히 마지막 코드 블록의 3 번째와 4 번째 줄에 마술이 있습니다.
는 업데이트 내가 DbEntityValidationException
받고 있어요
는 "검증은 하나 이상의 개체 실패 자세한 내용은 'EntityValidationErrors'속성을 참조하십시오.." 내부 예외에서 : "OriginalValues는 추가 상태에있는 엔티티에 사용할 수 없습니다."
주문 끝에 두 개의 세미콜론이 있음을 확인 했습니까? RentPrice = _context.Cars.Find (order.CarId) .RentPrice ;; -> 마지막 코드 블록 옆에? – Jack
SaveChanges 메서드의 유효성 검사 오류는 무엇입니까? 초기 Create 메서드의 코드가 제대로 작동합니다. – agradl
@ 잭, 게시물을 쓰는 동안 오타가 있습니다. 결정된. –