3

私のモデルは画像の通りです。

ここに画像の説明を入力

コード:

            App MyApp = (App)Application.Current;

            WFE = new WorkflowMenuEntities();
            WFE.Database.Connection.ConnectionString = MyApp.WorkflowMenuEntityConnectionString;


            string Input = Microsoft.VisualBasic.Interaction.InputBox("Deleting this Business Area will delete ALL processes associated with it.  If you are sure you wish to continue please type in delete and press ok.", "Confirm Deletion");

            if (Input == "delete")
            {
                int BusinessID = ((BusinessArea)ComboboxBusinessArea.SelectedItem).ID;

                BusinessArea myBusinessArea = WFE.BusinessAreas.Where(BA => BA.ID == BusinessID).FirstOrDefault();

                foreach (var myProcesses in myBusinessArea.Processes.ToList())
                {

                    foreach (var myWorkerProcess in myProcesses.WorkerProcesses.ToList())
                    {

                        myProcesses.WorkerProcesses.Remove(myWorkerProcess);


                    }

                    myBusinessArea.Processes.Remove(myProcesses);

                }

                foreach (var myADGroup in myBusinessArea.ADGroups.ToList())
                {
                    myBusinessArea.ADGroups.Remove(myADGroup);
                }



                WFE.BusinessAreas.Remove(myBusinessArea);
                WFE.SaveChanges();

                BuildBusinessAreaList();


            }

このコードを実行すると、WFE.SaveChanges 行で以下のエラーが発生します。

System.InvalidOperationException: 操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。System.Data.Objects.ObjectContext.SaveChanges (SaveOptions オプション) で
System.Data.Entity.Internal.InternalContext.SaveChanges() で System.Data.Entity.Internal.LazyInternalContext.SaveChanges() で System.Data.Entity.DbContext.SaveChanges() で ManageBusinessAreas.MainWindow.ButtonDeleteBusinessArea_Click (オブジェクト送信者、 RoutedEventArgs e) in c:\TFS_Source\SharedApps\AdminProcesses\ManageBusinessAreas\ManageBusinessAreas\ManageBusinessAreas\MainWindow.xaml.cs:line 249

他の投稿を見ましたが、残念ながら修正が適用されなかったか、機能しませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

2

問題を発見しました。myBusinessAreas の Processes Navigation から myProcess を削除する代わりに、コンテキストの Processes Entity から myProcess を削除する必要があります。

于 2013-09-10T14:53:48.027 に答える