1

ドメイン エンティティの子プロパティを削除しようとしています。CustomVariableGroupUI で、ユーザーは [削除] を選択して、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 つ以上の に属することができます。ApplicationCustomVariableGroupsCustomVariableGroupApplications

4

2 に答える 2

2

通常、オブジェクトを具体的に削除する必要があります。親コレクションからオブジェクトを削除すると、その特定の親に関連付けられたくないということになります。それを別の親に関連付けたくないということはわかりません。削除したい場合は、削除するための呼び出しを行う必要があります (L2S、IIRC の場合は DeleteOnSubmit)。

于 2012-05-27T05:14:10.887 に答える
1

それらの間にn対nの関係があるテーブルが間違っていなければ、ネストされたように機能します..最初に3番目のテーブル(2つのテーブルのIDを含む)から削除してから、メインテーブルから削除してください..

[申し訳ありませんが、ページにコメントを追加するボタンが表示されません..そのため、このアイデアを回答として書きました]

于 2012-05-27T01:46:34.170 に答える