2009-05-28 13 views
0

관계 (엔티티 프레임 워크) 테이블에 데이터를 삽입 할 수 없습니다 : 내가 엔티티 프레임 워크와 함께 일하고 있어요 내가 문제가 있어요

나는 그것이 하더군요 테이블에서 일부 데이터를 삽입하려고

그것은 참조 무결성을 위반하고 있지만 다른 테이블은 일반적으로 채워져 있으며 삽입하려고하는 값이 있습니다.

Pedido pedido = new Pedido(); 
pedido.Data = DateTime.Now; 

db.AddToPedido(pedido); 
db.SaveChanges(); 

EntityKey chave = db.CreateEntityKey("Pedido", pedido); 
Itens_Pedido item = new Itens_Pedido(); 

item.Pedido_Id = Convert.ToInt32(chave.EntityKeyValues.First().Value); 
item.Carta_Id = Convert.ToInt32(Request.QueryString["Id"].ToString());      
item.Quantidade = 1; 
item.Foil = "N"; 

db.AddToItens_Pedido(item); 
db.SaveChanges(); 
+0

어떤 오류가 있습니까? – Perpetualcoder

답변

1

나는 무슨 일이 일어나고 있는지 알고 있다고 생각합니다. Iten_Pedido의 기본 키가 화합물이며, 다시 Pedido에 FK 중 하나는 두 개의 필드로 구성, 즉 당신이 PedidoIten_Pedido

사이의 식별 관계가있는 경우

에 (즉, Pedido_Id 것) 귀하의 경우 불행히도 Pedido_Id 속성을 사용하여 해당 관계를 구축 할 수 없으면 대신 Pedido 탐색 속성을 사용해야합니다.

문맥에 이미 Pedido이있는 경우 정상적으로 관계를 구축하기 만하면됩니다. 그러나 내가 의심하는 컨텍스트가 아니라면, 당신이 알고있는 것이 모두 열쇠 일 것입니다. 1) 질의 2) 독립된 엔티티를 만들고 첨부하십시오 (이것은 비슷합니다 엔터티를 ObjectContext에 변경되지 않은 상태로 둡니다.

그래서 패턴 중 하나입니다 :

//assuming the key of the Pedido is Id change as appropriate 
Pedido pedido = ctx.Pedido.First(p => p.Id == XXX); 
item.Pedido = pedido; 
... 
ctx.AddToItens_Pedido(item); 
ctx.SaveChanges(); 

또는

Pedido pedido = new Pedido {Id = XXX}; 
ctx.AttachTo("Pedido", pedido); 
item.Pedido = pedido; 
... 
ctx.AddToItens_Pedido(item); 
ctx.SaveChanges(); 

특히 tip 9

희망에 대한 자세한 내용은 my tips series를 참조하십시오이 도움이

알렉스

+0

@Alex 이걸 보시라. http://stackoverflow.com/questions/1158795/ –

관련 문제