Entity Framework - ошибка отношения «многие ко многим» при удалении - PullRequest
0 голосов
/ 07 июня 2011

У меня есть 3 таблицы:

SocialNetwork
  IdSocialNetwork (PK) (Not Null)
  Name (Not Null)
  Active (Not Null)

User
  IdUser (PK) (Not Null)
  Name (Not Null)

SocialNetworkXUser
  IdSocialNetworkXUser (PK) (Not Null)
  IdSocialNetwork (Not Null)
  IdUser (Not Null)
  Active (Not Null)

Мне нужно обновить социальные сети одного пользователя.Сначала у меня было 2 социальные сети (Facebook и Twitter), а теперь я снимаю галочку с Twitter.Итак, я должен удалить запись в SocialNetworkXUser for Twitter.

Я использую Unit of Work для управления доступом к Entity Framework.

Мой код выглядит так:

foreach (DtoSharedSocialNetwork socialNetworkXUser in dtoUserSocialNetworksPreferences.SharedSocialNetworks)
{
//Check is exist
SocialNetworkXUser temp = (from sxu in actualUser.SocialNetworkXUsers
                            where sxu.IdSocialNetwork == socialNetworkXUser.IdSocialNetwork
                            select sxu).FirstOrDefault();

//If Checked
if (socialNetworkXUser.IsShared)
  {
    //If Not exist
    if (temp == null)
       {
        SocialNetworkXUser newSocialNetworkXUser = new SocialNetworkXUser();

        newSocialNetworkXUser.IdSocialNetwork = socialNetworkXUser.IdSocialNetwork;
        newSocialNetworkXUser.IdUser = actualUser.IdUser;

        actualUser.SocialNetworkXUsers.Add(newSocialNetworkXUser);
       }
   }
else
  {//If Not Checked

   //If Exist, Remove!
   if (existe != null)
     {
     actualUser.SocialNetworkXUsers.Remove(existe);                        
     }
  }

Затем я использую Unity of Work для обновления пользователя.

UnitOfWork unitOfWork = _userRepository.UnitOfWork;

_userRepository.Modify(user);

unitOfWork.CommitAndRefreshChanges();

Когда выполняется CommitAndRefreshChanges, выдается следующая ошибка:

Операция не выполнена: связьне может быть изменено, потому что одно или несколько свойств внешнего ключа не могут иметь значение NULL.Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение.Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть присвоено другое ненулевое значение или несвязанный объект должен быть удален.

IПопробуйте много вещей, и я не могу решить это.В других частях моей системы я делаю то же самое, и у меня нет этой ошибки.

Может ли кто-нибудь дать мне помощь?

Извините за мой плохой английский

Спасибо!

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