ドメイン エンティティの子プロパティを削除しようとしています。CustomVariableGroup
UI で、ユーザーは [削除] を選択して、Application
エンティティからを削除します。
LINQ-to-SQL エンティティからプロパティを削除してから変更を送信すると、LINQ-to-SQL がデータベース側で作業を処理するようになると思いました。ただし、行がテーブルから削除されることはありません。アプリケーションでページを更新すると、データベースにまだあるため、プロパティはまだそこにあります。
public void Save(Application application)
{
ApplicationRecord appRecord = application.Map(); // Maps domain entity to L2S entity
// Before this line executes, appRecord has 0 CustomVariableGroups, which is correct.
this.Database.ApplicationRecords.Attach(appRecord, true);
// After the attach, appRecord now has 1 CustomVariableGroup again. This is wrong.
appRecord = application.Map(); // Hack to remove the CustomVariableGroup again.
// This doesn't delete the CustomVariableGroup from appRecord. Do I need
// to delete it explicitly? Or should removing it from appRecord, and
// calling SubmitChanges() do it?
this.Database.SubmitChanges();
}
エンティティでこの子プロパティを取り除く正しい方法は何ですか? リストをループして各項目を個別に削除することもできると思いますが、LINQ-to-SQL がそのように機能するとは思えません。
どんなアイデアでも大歓迎です。
注:プロパティは、データベース内の関連付けApplicationCustomVariableGroupRecords
を解決するテーブルを表します。は 1 つ以上many-to-many
のを持つことができ、 は 1 つ以上の に属することができます。Application
CustomVariableGroups
CustomVariableGroup
Applications