1

現在、Linq to Sql を使用して Asp.Net Dynamic Data を使用して、CRUD アクションのみが関連付けられた単純なサイトを作成しています。

残念ながら、データベース スキーマをまったく変更できず、正常に解決できない問題が発生しました。

データベースには、中央のユーザー テーブルとアクセス権に関連する追加のテーブルがあり、ユーザーごとに 3 つの行があり、アクセス タイプと、ユーザーが権利を持っているかどうかを示すビット フラグ (UserId、Access Type、Has Access など) があります。

要件は、チェックボックスがユーザーの詳細と編集画面に提供され、アクセス権を選択できるようにすることです。

私が見ることができる最大の問題は、挿入/更新/削除アクションを実装して、1 つのトランザクション内で両方のテーブルが変更されるようにする方法です。

これまでのところ、私が見ることができる唯一の解決策は、挿入/更新/削除イベントをハイジャックしてすべて手動で行うことですが、その場合は、動的データを使用するよりも、通常の Asp.Net Web フォームでページを作成する方がよいでしょう。 .

私がそれを行うことができる他の方法のアイデアを誰かが持っていますか?

4

1 に答える 1

0

これは残念なデータベース設計です。そうです、データコンテキストのSubmitChanges()をインターセプトし、そこで特殊な更新を行う必要があります。もう1つのオプションは、データベーストリガーを使用することです。

public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{
    ChangeSet changeset = GetChangeSet();

    foreach (var u in changeset.Deletes.OfType<Users>())
    {
        // do something to details
    }
}
于 2011-07-12T16:19:09.010 に答える