2013-08-23 6 views
0

Tecnologies: ASP.NET MVC3, Entity Framework 4, Многоуровневые AppEntity Framework 1 до 0 отношения

У меня есть две таблицы в 0 до 1 отношения. У duplicata может быть 0 или один pagamento, а pagamento - только один дубликат. Link

Его дубликат запоминаются при им своей базе данных, когда я создаю новый Pagameto объект и добавить к одному Dupliacata дает этот ERRO:

A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship. 

Изображения Пыльник отображать сущность дубликат с одним Pagamento. Link

И код с получает сообщение об ошибке:

  context.Duplicata.Attach(duplicata); 
      context.ObjectStateManager.ChangeObjectState(duplicata, EntityState.Modified); 

      context.SaveChanges(); 
+0

Почему вы используете присоединять? Вы отделили объект ранее? Потому что если сохранение - это то, что вы хотите сделать, попробуйте использовать метод .AddObject вместо – Gonzix

+0

Я использую attach, потому что дубликаты уже существуют в моей базе данных. В этом случае я добавляю pagamento в duplicata. – Ramalho

ответ

0

Да, но porpouse из присоединять не добавляет элемент в дубликате бушеля, чтобы попасть в контекст отдельностоящих сущностей. Если вы хотите создать новый дубликат, просто создайте новый. Как и в

// just for testing NO magic numbers! 
var pagamentoId = 1; 
var duplicata = new Duplicata(); 
duplicata.PAGAMENTO_ID = pagamentoId; 
duplicata.VALOR = 1000; 
duplicata.CLIENTE_ID = 23; 

// add the rest of properties 


// then... 
context.AddObject("Duplicatas", duplicata); 
context.SaveChanges(); 

Примечания Я использовал «Duplicatas» в AddObject, как я предположил, что это ваше имя для набора дубликата (набор означает, что это коллекция дубликата и установить это имя в файле EDMX).

Устанавливая pagamento_id к значению вы хотите, чтобы он автоматически генерирует отношения между двумя субъектами

+0

Но моя проблема в том, что я создал Pagamento и добавлю pagamento к любому Duplicata. – Ramalho

+0

Но, за ваш дизайн db, duplicata зависит от pagamento (duplicata является родителем pagamento), и отношения выполняются между dbo.pagamento.id и dbo.duplicata.pagamento_id. Если это не так, и pagamento является родителем, вы должны переделать db. Поэтому, если я правильно говорю, вам нужно сначала создать pagamento и добавить к нему дубликат. – Gonzix

+0

Так что это была ошибка в дизайне дБ. Мне нужно, чтобы Pagamento зависел от Duplicata, а не от других. Чем мне нужно переделать отношения между Duplicata и Pagamento, а duplicata.pagamento.add (Pagamento) будет работать правильно? – Ramalho

Смежные вопросы