1

スクリーンショットで問題が発生しました: 問題

プログラムの最初のコードは次のとおりです。

    public MainWindow()
    {
        InitializeComponent();


        BlackoutDates();

        variables.date = Convert.ToDateTime(MainCalendar.DisplayDate);
        DateOutput.Content = MainCalendar.DisplayDate.DayOfWeek + ", " + MainCalendar.DisplayDate.ToShortDateString();



    }

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

ウィンドウがロードされたときのコードは次のとおりです

 private void Bookings_Loaded(object sender, RoutedEventArgs e)
    {


       WpfApplication7.AllensCroftEntities1 allensCroftEntities1 = new WpfApplication7.AllensCroftEntities1();
        // Load data into Rooms.
        var roomsViewSource = ((CollectionViewSource)(this.FindResource("roomsViewSource")));
        var roomsQuery = this.GetRoomsQuery(allensCroftEntities1);
        roomsViewSource.Source = roomsQuery.Execute(MergeOption.AppendOnly);

    }

エラーの原因となる削除ボタンのコードは次のとおりです。

 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("Booking Deleted");
        }
    }

オブジェクト インデックスのコードは次のとおりです。

   private void listrow_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        //outputs index of the selected room
        ObjectIndex = listrow.SelectedItem as Booking;
    }

編集、

私は試した

 allensCroftEntities1.Attach(ObjectIndex);

付ける

編集、

予約が読み込まれたイベントでエンティティをコメントアウトすると、このエラーが発生します。このコードは以前は正常に機能していましたが、これらの問題がすべて発生している理由がわかりません。

null 許容

4

1 に答える 1

2

最初にエンティティをコンテキストにアタッチしてみてください:

allensCroftEntities1.Attach(ObjectIndex);
allensCroftEntities1.DeleteObject(ObjectIndex);

Bookings_Loadedまたは、その行を削除して、イベント ハンドラー内のローカル スコープではなく、クラス スコープで宣言されたコンテキストを使用します。

WpfApplication7.AllensCroftEntities1 allensCroftEntities1 = new WpfApplication7.AllensCroftEntities1();
于 2013-03-17T22:37:46.987 に答える