Сохранение объектов отношения «многие ко многим» в структуре сущностей - PullRequest
1 голос
/ 20 марта 2009

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

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

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

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

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

loccvgs: LOCID, CVGID (без ключей)

Помощь!

1 Ответ

1 голос
/ 28 февраля 2010

У меня есть точный вопрос, но я нашел решение. Я предупреждаю вас, хотя, это действительно плохо. В моей ситуации у меня есть 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, чтобы я мог создать новый комментарий. Я хотел бы лучший способ сделать это, но я не знаю один. Может быть, это может помочь.

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