Установите значение поля обслуживания в динамических данных - PullRequest
3 голосов
/ 29 марта 2009

В моем проекте многие таблицы связаны с таблицей aspnet_Application внешним ключом ApplicationId. Я не хочу, чтобы пользователи просматривали или редактировали его, поэтому я ищу способ предварительно установить значение этого поля таблицы SQL перед выполнением запроса вставки. У меня все еще включены строительные леса для этого столбца (чтобы DD генерировал правильный скрипт sql), но я скрываю этот столбец / поле на всех страницах редактирования / списка / вставки.

В идеале я ищу место для внедрения моего кода непосредственно перед выполнением DynamicInsert для любой таблицы в моем классе LinqToSql.

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2009

Так что после некоторого копания я нашел приемлемое решение. Я создал частичный класс для своего контекста данных и добавил частичный метод Insert_ для каждой таблицы, которая связана с aspnet_Applications . В каждом методе я устанавливаю в поле ApplicationId текущий идентификатор приложения.

Это выглядит так:

public partial class MyDataContext
{
    partial void InsertMyTable(MyTable instance)
    {
        instance.ApplicationId = HttpContext.Current.Session["ApplicationId"] as Guid?;
    this.ExecuteDynamicInsert(instance);
    }
}

Обратите внимание, что вы не можете выполнять другие операторы LINQ в этом методе. В частности, мне пришлось хранить идентификатор приложения в сеансе, а не запрашивать таблицу aspnet_Applications .

Хотя это приемлемое решение, оно не идеально (много повторяющегося кода), поэтому, если кто-нибудь знает, лучше бросьте мне кость:)

0 голосов
/ 29 марта 2009

В будущем лучшим решением будет использование части DomainService для предварительной версии .Net RIA Services, только что выпущенной на MIX09, смотрите здесь видео:

.NET RIA Services - создание управляемых данными приложений с помощью Microsoft Silverlight и Microsoft ASP.NET

Доступ к данным Microsoft ASP.NET 4.0: шаблоны успеха с веб-формами

Первый - это введение в .net RIA Services с точки зрения Silverlight, но в большей степени он относится к DD, второй - презентация Дэвида Эббо в MIX, и он показывает, как DomainService работает с DD. Я думаю, что это путь вперед, так как Вы можете выполнить всю свою бизнес-логику здесь, в DomainService.

...