【问题标题】:When Deleting Entity I get an Error of: The relationship could not be changed because one or more of the foreign-key properties is non-nullable删除实体时出现错误:无法更改关系,因为一个或多个外键属性不可为空
【发布时间】:2013-09-09 23:33:56
【问题描述】:

我的模型如图所示。

代码:

            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 选项)
在 System.Data.Entity.Internal.InternalContext.SaveChanges() 在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 在 System.Data.Entity.DbContext.SaveChanges() 在 ManageBusinessAreas.MainWindow.ButtonDeleteBusinessArea_Click(对象 发件人,RoutedEventArgs e) 在 c:\TFS_Source\SharedApps\AdminProcesses\ManageBusinessAreas\ManageBusinessAreas\ManageBusinessAreas\MainWindow.xaml.cs:line 249

我查看了其他帖子,不幸的是,这些修复要么不适用于我,要么不起作用。任何帮助将不胜感激。

【问题讨论】:

    标签: c# entity-framework-4.1


    【解决方案1】:

    发现问题。我需要从我的上下文的流程实体中删除它,而不是从 myBusinessAreas 的流程导航中删除 myProcess。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2013-10-19
      • 2014-04-26
      相关资源
      最近更新 更多