删除实体时遇到错误:关系无法更改,因为一个或多个外键属性是非空的。

3

我的模型如图所示。

enter image description here

代码:

            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:操作失败:因为一个或多个外键属性是非空值,所以无法更改关系。当更改关系时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,将外键属性分配给另一个非空值,或删除不相关的对象。 在System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)中 System.Data.Entity.Internal.InternalContext.SaveChanges() 在System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 在System.Data.Entity.DbContext.SaveChanges() 在ManageBusinessAreas.MainWindow.ButtonDeleteBusinessArea_Click(Object sender, RoutedEventArgs e) 中,位于c:\TFS_Source\SharedApps\AdminProcesses\ManageBusinessAreas\ManageBusinessAreas\ManageBusinessAreas\MainWindow.xaml.cs第249行。
我查看了其他帖子,不幸的是修复方法要么不适用于我,要么没有起作用。任何帮助都将不胜感激。
1个回答

2
发现了问题。我需要将myProcess从我的上下文的Processes实体中删除,而不是从myBusinessAreas的Processes导航中删除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接