Asp.Net Dynamic Data обновляет / вставляет 2 таблицы в одну транзакцию - PullRequest
1 голос
/ 12 июля 2011

Я использую Asp.Net Dynamic Data с Linq to Sql для создания простого сайта, с которым связаны только действия CRUD.

К сожалению, я вообще не могу изменить схему базы данных и столкнулся с проблемой, из-за которой у меня возникли проблемы с изящным разрешением.

База данных имеет центральную таблицу пользователей и дополнительную таблицу, связанную с правами доступа, где на пользователя приходится 3 строки с типом доступа и битовым флагом, указывающим, имеют ли они право, например. UserId, тип доступа, имеет доступ.

Требуется, чтобы на экране сведений о пользователях и для редактирования были установлены флажки, позволяющие выбирать права доступа.

Самая большая проблема, которую я вижу, заключается в том, как реализовать действия вставки / обновления / удаления, чтобы обеспечить изменение обеих таблиц в одной транзакции.

Пока что единственное решение, которое я вижу, это перехватить событие вставки / обновления / удаления и сделать все вручную, но в этом случае мне, вероятно, было бы лучше писать страницы в обычных веб-формах Asp.Net, а не пытаться использовать динамические данные.

У кого-нибудь есть какие-либо идеи относительно других способов, которыми я мог бы это сделать?

1 Ответ

0 голосов
/ 12 июля 2011

Это неудачный дизайн базы данных.Вы правы, вы должны перехватить SubmitChanges () вашего контекста данных и выполнить там специализированное обновление.Другой вариант - использовать триггеры базы данных.

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

    foreach (var u in changeset.Deletes.OfType<Users>())
    {
        // do something to details
    }
}
...