Возвращение идентификатора базы данных и других данных обратно в ViewModel при создании WPF Smart Client с WCF - PullRequest
0 голосов
/ 15 декабря 2011

Я создаю приложение WPF Smart Client, которое использует WCF и NHibernate на сервере.Я добился хорошего прогресса, но у меня есть вопрос относительно того, как получить пакет данных из службы WCF для включения кнопок / функций в интеллектуальном клиенте WPF.

В настоящее время у меня есть экран CreateProduct, который в конечном итоге вызывает WCFProductService.CreateProduct.(ProductDTO productDetails) к услуге WCF.Это прекрасно работает и создает запись продукта в базе данных.Метод CreateProduct в настоящее время ничего не возвращает.

Я не хочу создавать массивный DTO в памяти, а затем отправлять его по проводам.Я стремлюсь сделать что-то более похожее на «Создание продукта», затем «AddSomething», «AddSomething else» в качестве отдельных задач.

Для этого у меня есть кнопка «AddAttribute».Атрибут Add должен работать в контексте продукта на уровне обслуживания WCF, поэтому мне нужно отправить ProductId в AddAttributeDTO.Конечно, на этом этапе ProductDTO не имеет идентификатора, поскольку он был полностью создан в памяти перед отправкой в ​​службу WCF.

Я предполагаю, что при вызове службы WCF CreateProduct потребуется вернуть некоторые данные.тип объекта, который содержит Id и другие данные

Какую форму это принять?
Есть ли какие-либо документы по руководству / наилучшей практике для этого?
Как я могу использовать это для включения соответствующих кнопок?

Заранее благодарен за любую помощь

Alex

1 Ответ

1 голос
/ 15 декабря 2011

Вы можете просто вернуть DTO обратно потребителю, добавив любую необходимую вам информацию.

public class AddProductResponse
{
    public string ProductId { get; set; }
}

Ваш OperationContract будет выглядеть так:

public AddProductResponse AddProduct(YourProductDto dto)
{
}

Я бы также добавилВаша идея добавить «части» в уже существующий продукт, вероятно, излишня.Если ваш продукт не содержит буквально 100000 атрибутов, он не будет потреблять места, близкого к тому типу памяти, о котором вам следует беспокоиться.Будет намного чище и проще поддерживать один DTO с соответствующими методами добавления, обновления и т. Д.

...