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