2009-03-20 2 views
1

Я пытаюсь сохранить объект, который является частью отношения «многие ко многим» в структуре сущности и получает ошибку: невозможно обновить EntitySet «zRM_OP_defaultloccvgsMapping» ', потому что у него есть DefiningQuery, и в элементе нет элемента для поддержки текущей операции.Сохранение объектов отношения «многие ко многим» в структуре сущности

Мой google-fu слаб на этом, но я понимаю, что мне, возможно, придется отредактировать код дизайнера и подключить хранимую процедуру, чтобы вручную вставить.

Моя структура таблицы выглядит следующим образом:

места: LOCID, бла ..

покрытий: CVGID, бла ..

loccvgs: LOCID, CVGID (нет ключи)

Помощь!

+0

Прежде чем мое решение поможет вам, вам нужно будет сделать первичные ключи LOCID & CVGID в таблице loccvgs. Я думаю, что это именно то, что требует EF. – jason

ответ

1

У меня есть этот точный вопрос, но я придумал решение. Я предупреждаю вас, это очень плохо. В моей ситуации у меня есть 3 таблицы:

Видео - VideoID, INT, PK - бла

Комментарий - CommentID, INT, PK - UserId, INT (пользователь, который сделал комментарий) - CommentText , струнные

VideoComments - VideoID, INT, PK - CommentID, INT, PK

Прежде всего, для структуры объекта для установки отношения правильно бо го столбца в таблице ассоциации (VideoComments в моем случае) должен быть первичным ключом.

Это, как я добавляю новый комментарий.

public VideoDTO AddCommentToVideo(VideoDTO pVideo, CommentDTO pComment) 
     { 
      Video video = context.Videos.Where(v => v.VideoId == 
     pVideo.VideoId).FirstOrDefault(); 
      User user = context.Users.Where(u => u.UserId == 
     pComment.User.UserId).FirstOrDefault(); 
      Comment comment = new Comment(); 
      comment.CommentText = pComment.CommentText; 
      comment.User = user; 
      comment.Videos.Add(video); 
      context.AddToComments(comment); 
      context.SaveChanges(); 

      return pVideo; 
     } 

Это очень плохо ... как будто пересечение потоков плохо. Я делаю 2 запроса, чтобы получить полные объекты, заданные Entity Framework, поэтому я могу создать новый комментарий. Я бы хотел, чтобы это было лучше, но я не знаю этого. Может быть, это может помочь.

+1

Я думаю, что в итоге я сделал аналогичную вещь. EF 1.0 был настолько плохим. – burnside

+0

Конечно, я опоздал на год, но лучше поздно, чем никогда, полагаю, а? – jason

+0

Слишком поздно, но, возможно, помогите кому-нибудь ... [Посмотрите ответ на этот вопрос] (http://stackoverflow.com/questions/14098600/many-to-many-relationships-not-saving) – UUHHIVS

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