私のモデルは画像の通りです。
コード:
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
他の投稿を見ましたが、残念ながら修正が適用されなかったか、機能しませんでした。どんな助けでも大歓迎です。