утверждение противоречило ограничению REFERENCE - PullRequest
2 голосов
/ 27 июля 2011

КОД КНОПКИ КНОПКИ

bindingSource1.EndEdit();
            try
            {
                // Delete all the Channels for the current Folder.
                int folderID = (int)RemoveFolderBox.SelectedValue;
                deleteChannels(folderID);

                // Delete the folder itself.
                RSSDataSet1.FolderRow folder = rSSDataSet1.Folder.FindByFolderID(folderID);
                folder.Delete();

                int rowsAffected = folderTableAdapter.Update(rSSDataSet1);

                if (rowsAffected > 0)
                {
                    //statusLabel.Text = "Folder successfully deleted.";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem when deleting folder:" + ex.Message);
            }

deleteChannels-функция:

private void deleteChannels(int folderID)
{
    try
    {
       RSSDataSet1.ChannelRow[] channels = (RSSDataSet1.ChannelRow[])rSSDataSet1.Channel.Select("FolderID = " + folderID.ToString());

       foreach (RSSDataSet1.ChannelRow channel in channels)
       {
          int channelID = channel.ChannelID;
          channel.Delete();
       }
       int rowsAffected = channelTableAdapter1.Update(rSSDataSet1);
     }
     catch (Exception ex)
     {
       throw ex;
     }
}

Я получаю

Оператор DELETE конфликтует с ограничением REFERENCE. "FK_Channel_Folder". Конфликт произошел в базе данных "C: \ USERS \ ADMIN \ DOCUMENTS \ VISUAL STUDIO 2010 \ PROJECTS \ PROJ RSS \ PROJ RSS \ BIN \ DEBUG \ RSS.MDF ", таблица" dbo.Channel ", столбец" FolderID ". заявление было прекращено.

1 Ответ

2 голосов
/ 27 июля 2011

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

Вам нужно будет удалить любые зависимые Folder сущности перед удалением Channel или настроить каскадное удаление.

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