C# 更新条目时出错。详情见内部异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15466854/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 16:55:45  来源:igfitidea点击:

An error occurred while updating the entries. See the inner exception for details

c#sqlwpfdatabaseentity-framework

提问by Hamoudy

When i delete an item in a listbox, i get the error in the question as shown in the screenshot below: error

当我删除列表框中的项目时,出现问题中的错误,如下面的屏幕截图所示: 错误

I do not know where the inner exception is, but i tried try, catch but i got the same error in the question.

我不知道内部异常在哪里,但我尝试过 try、catch 但我在问题中遇到了同样的错误。

Here is all of the code :

这是所有的代码:

namespace WpfApplication7
 {
/// <summary>
/// Interaction logic for Edit_Rooms.xaml
/// </summary>
public partial class Edit_Rooms : Window
{
    public Edit_Rooms()
    {
        InitializeComponent();
    }

    //initialises entities
    WpfApplication7.AllensCroftEntities1 allensCroftEntities1 = new WpfApplication7.AllensCroftEntities1();
    private Room ObjectIndex;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        // Load data into Rooms. 
        System.Windows.Data.CollectionViewSource roomsViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("roomsViewSource")));
        //runs a query to go the roomsQuery to get the rooms table from the entities
        System.Data.Objects.ObjectQuery<WpfApplication7.Room> roomsQuery = this.GetRoomsQuery(allensCroftEntities1);
        //used when adding new rooms
        roomsViewSource.Source = roomsQuery.Execute(System.Data.Objects.MergeOption.AppendOnly);
    }

    private System.Data.Objects.ObjectQuery<Room> GetRoomsQuery(AllensCroftEntities1 allensCroftEntities1)
    {
        System.Data.Objects.ObjectQuery<WpfApplication7.Room> roomsQuery = allensCroftEntities1.Rooms;
        // Returns an ObjectQuery.
        return roomsQuery;
    }

    private void btnDelete_Click(object sender, RoutedEventArgs e)
    {
        //prevents user trying to delete nothing/unselected row
        if (ObjectIndex == null)
        {
            MessageBox.Show("Cannot delete the blank entry");
        }
        else
        {
                //deletes object from dataset, saves it and outputs a message
                allensCroftEntities1.DeleteObject(ObjectIndex);
                allensCroftEntities1.SaveChanges();
                MessageBox.Show("Room Deleted");
        }
    }

    private void btnSave_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            //attempts to save changes
            allensCroftEntities1.SaveChanges();
            MessageBox.Show("Saved");
        }
        catch (Exception ex)
        {
            //if unsuccessful, outputs an error message
            MessageBox.Show(ex.ToString());
        }
    }

    private void btnFirst_Click(object sender, RoutedEventArgs e)
    {
        listbox.SelectedIndex = 0;
    }

    private void btnPrevious_Click(object sender, RoutedEventArgs e)
    {
        //prevents user going to the previous item before the first item
        if (listbox.SelectedIndex > 0)
        {
            listbox.SelectedIndex -= 1;
        }
    }

    private void btnNext_Click(object sender, RoutedEventArgs e)
    {
        //prevents user going after last item and throwing up an error
        if (listbox.SelectedIndex < listbox.Items.Count)
        {
            listbox.SelectedIndex += 1;
        }
    }

    private void btnLast_Click(object sender, RoutedEventArgs e)
    {
        listbox.SelectedIndex = listbox.Items.Count - 1;
    }

    private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //outputs index of the selected room
        ObjectIndex = listbox.SelectedItem as Room;
    }
}
}

采纳答案by Oliver

Click "View Detail..." a window will open where you can expand the "Inner Exception" my guess is that when you try to delete the record there is a reference constraint violation. The inner exception will give you more information on that so you can modify your code to remove any references prior to deleting the record.

单击“查看详细信息...”将打开一个窗口,您可以在其中展开“内部异常”我的猜测是当您尝试删除记录时存在引用约束冲突。内部异常将为您提供更多信息,以便您可以修改代码以在删除记录之前删除任何引用。

enter image description here

在此处输入图片说明

回答by stephen776

Click "view details" to find the inner exception.

单击“查看详细信息”以查找内部异常。