ASP.NET MVC с Entity Framework - UpdateException - PullRequest
2 голосов
/ 02 февраля 2010

Я сталкиваюсь с проблемой при обновлении объекта в моей базе данных с использованием Entity Framework.

Во-первых, концепция такова:

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

Чтобы смоделировать это в базе данных, у меня есть следующая структура:

Пользователи: Я БЫ название и т.д.

Группа: Я БЫ Имя

GroupMembers: GroupID Идентификатор_пользователя

Оба поля в GroupMembers являются внешними ключами, связанными с идентификатором пользователя и идентификатором группы. Когда я загружаю это в Entity Framework, он корректно моделируется в том смысле, что у объекта группы есть список объектов пользователя, а у каждого объекта пользователя - список объектов группы.

Однако, когда я иду, чтобы добавить пользователя в группу, я получаю следующую проблему:

var group = DAO.GetGroup(GroupID);
var user = DAO.GetUser(UserID);
group.Users.Add(user);
conn.SaveChanges();

Невозможно обновить EntitySet «GroupMembers», потому что он имеет DefiningQuery и нет элемент существует в элемент для поддержки текущей операции.

Я видел в Интернете различные статьи, в которых предлагалось добавить поле идентификатора в таблицу GroupMembers. Однако, если я это сделаю, в EF появится ошибка сопоставления, в которой будет указано, что идентификатор не сопоставлен ни с чем.

Кто-нибудь сможет дать какой-нибудь другой совет или обходной путь?

Спасибо

Chris

Ответы [ 2 ]

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

Удалить столбец ID из GroupMembers. Создайте PK для GroupMembers, состоящего из и GroupID и UserID. Теперь щелкните правой кнопкой мыши свою модель и обновите ее из БД.

Разработчик EF должен знать, что пара GroupID и UserID уникальна, чтобы получить правильную мощность.

0 голосов
/ 02 февраля 2010

Сделав оба поля в GroupMembers первичным ключом, я теперь могу добавить их в таблицу.

Спасибо за вашу помощь: -)

Chris

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