【问题标题】:statement conflicted with the REFERENCE constraint语句与 REFERENCE 约束冲突
【发布时间】:2011-07-27 15:03:08
【问题描述】:

按钮点击代码

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);
            }

删除频道功能:

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”。 语句已终止。

【问题讨论】:

    标签: c# sql


    【解决方案1】:

    如果您尝试删除的项目被删除,您的外键引用将被违反。看起来 Channel 具有依赖于它的 Folder 实体。

    您需要在删除 Channel 之前删除任何依赖的 Folder 实体,或设置级联删除。

    【讨论】:

    • 所以我的代码倒退了,因为我试图在文件夹之前先删除频道?还是我的 FK 错了?因为 Channels 是 Folder 的子节点
    • 如果您打算让 Channel 成为 Folder 的子级,根据您发布的错误,您似乎在错误的方向上建立了密钥。
    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2011-04-16
    相关资源
    最近更新 更多