この問題をライトスイッチ フォーラムに投稿しましたが、何も得られませんでした。Lightswitch をあきらめる前に、もう一度試してみようと思いました。
適切に定義されたリレーショナル制約を使用して、Sql Server データベースに対して削除を実装しています。さまざまな理由から、これらの関係に対してカスケード削除を指定することはできません。
1 つのエンティティ タイプを正常に削除しているため、私のアプローチは正しいようです。エンティティの削除イベントで、関連するすべての子を次のように削除しています。
entity.simpleChild.Delete();
foreach (var child in entity.complexChild)
{
((IEntityObject)child).Delete();
}
foreach (var child in entity.ChildWithGrandChildren)
{
foreach (var grandChild in child.Children)
{
((IEntityObject)grandChild).Delete();
}
child.Delete();
}
ただし、エンティティ タイプの 1 つが失敗しています。このエンティティには孫がいますが、それらも削除します。それだけでなく、孫の削除をコメントアウトして、関連する孫を持たないエンティティを削除しようとすると、同じエラーが発生します。動作する TSQL スクリプトと同じ順序ですべてを削除しています。ただし、実行時に次のエラーが発生します。
操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。
データベースをプロファイリングすると、多くの選択が表示されますが、削除の試みは見られないため、Lightswitchは問題があると考えています。問題がどこにあるかを把握するにはどうすればよいですか? モデルからさまざまな関連エンティティを削除しても、別のメッセージは生成されません。