Это плохая практика (я делаю это неправильно)? - PullRequest
0 голосов
/ 20 июня 2011

В приложении Silverlight LOB я заполняю ItemsControl результатами запроса RIA-сервисов (EF).Внутри элемента управления есть несколько пользовательских элементов управления, и в одном из них у меня есть кнопка, которую я использую для удаления объекта.

Чтобы удалить это, я присоединяю его к контексту домена в элементе управления, а затем удаляю его.Чтобы иметь возможность прикрепить его, я делаю это в моей модели представления при получении данных:

        foreach(var app in Apps.ToList())
        {
            _context.Apps.Detach(app);
        }

Это хак?потому что это похоже на один.

1 Ответ

1 голос
/ 20 июня 2011

Шаблоны существуют, чтобы служить разработчику, а не наоборот. Вы определили вонючий код. Что-то, что тебя беспокоит. Теперь вам нужно сделать два выбора. Достаточно ли неприятный запах, чтобы удалить его? И как вы должны удалить его.

Одно предложение. Вам не нужно использовать стандартный CRUD с RIA Services. Вы можете создать служебную операцию DeleteApp, которая принимает идентификатор приложения и выполняет удаление в базе данных. Это позволит избежать необходимости выполнять отсоединение и тому подобное на стороне клиента. Это пример шаблона Transaction Script , как I , описанного в моей статье , хотя и очень элементарный пример. После этого не забудьте перезагрузить список клиентов, чтобы у вас не было устаревших данных.

В крайнем случае, вы можете захотеть взглянуть на разделение командных запросов. В этом случае у вас есть два отдельных DomainServices: одно только для чтения, а другое только для записи. Это заставляет вас быть более четкими в своих действиях и больше думать о ЧТО вы хотите сделать вместо КАК , чтобы сделать это.

...