Невозможно вставить данные в таблицу с отношением (структура сущности) - PullRequest
0 голосов
/ 28 мая 2009

Я работаю с Entity Framework и у меня возникла проблема:

Когда я пытаюсь вставить некоторые данные в таблицу, это говорит мне, что это нарушает целостность ссылок, но другая таблица обычно заполняется и имеет значение, которое я пытаюсь вставить.

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();

1 Ответ

1 голос
/ 28 мая 2009

Мне кажется, я знаю, что происходит.

Если у вас есть идентифицирующая связь между Pedido и Iten_Pedido

т.е. Первичный ключ Iten_Pedido является составным и состоит из двух полей, одно из которых - FK назад к 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();

См. серия моих советов для получения дополнительной информации, в частности совет 9

Надеюсь, это поможет

Alex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...