EF4 코드 우선 MVC3을 사용하고 있습니다. 내가 specificEventId = 2
과 specificEvent = X
, 새로운 SpecificEvent
객체가 DB에 생성됩니다와 함께 주문 개체를 저장하려고하면 이미 DB에 ID 2와 특정 이벤트 X가, 비록MVC3 EF4는 저장시 외래 키 객체를 복제합니다.
public class Order {
public int ID { get; set; }
[Required]
public float Price { get; set; }
[Required]
public int PayMethodId { get; set; }
public PayMethod PayMethod { get; set; }
public int? SpecificEventId { get; set; }
public SpecificEvent SpecificEvent { get; set; }
public int? SeasonalTicketId { get; set; }
public SeasonalTicket SeasonalTicket { get; set; }
}
: 나는 다음과 같은 모델을 가지고 . specificEventId = 2
및 specificEvent = null
으로 시도 할 때 데이터 검증 오류가 발생합니다.
내가 뭘 잘못하고 있니?SpecificEvent
및 SeasonalTicket
을 Nullable로 설정하고 EF4가 'Order'를 저장할 때마다 DB에 이러한 객체의 새 인스턴스를 만들지 않기를 바랍니다.
업데이트
이 DB에 Order
을 저장하는 내 코드입니다 : 내가 저장하면
public void SaveOrder(Order order)
{
Order fromDb = null;
// If editing an existing object.
if ((fromDb = GetOrder(order.ID)) != null)
{
db = new TicketsDbContext();
db.Entry(order).State = System.Data.EntityState.Modified;
db.SaveChanges();
}
// If adding a new object.
else
{
db.orders.Add(order);
db.SaveChanges();
}
}
, 나는 else
절에 도달 않습니다.
이것은 EF에 대한 가장 일반적인 질문이므로 질문하기 전에 무엇을 검색했는지 궁금합니다. –
@ 라디 슬라브 : "ef \ mvc 선택적인 외래 키", "ef \ mvc 객체가 저장 중 중복"등을 검색했습니다. 내 사례와 가까운 몇 가지 예제를 발견했지만 여전히 저에게는 효과가 없었습니다. 어쩌면 나는 뭔가를 놓쳤을 것이다. (나는 수표를 틀었고 나 자신을 다시 확인 했음) 어쩌면 내가 잘못된 것을 찾았을 것이다. 나는 몇 시간 동안이 버그를 디버깅하려고 시도했다 (나는 EF 멍청이이다. :). 당신이 뭔가 명확한 것을 놓치고 있다고 생각하거나 내가 찾을 수있는 다른 것들에 대한 제안이 있다면, 나는 듣기보다 행복 할거야 :) – Ofirov
엔티티를 저장할 코드를 질문에 추가해야합니다. –