在使用WCF创建WPF Smart Client时,将数据库ID和其他数据返回给ViewModel

时间:2011-12-15 13:43:00

标签: c# wpf wcf mvvm

我正在创建一个WPF智能客户端应用程序,它在后端使用WCF和NHibernate。我正在取得良好进展,但对于如何从WCF服务获取数据包以启用WPF智能客户端中的按钮/功能有疑问。

目前我有一个CreateProduct屏幕,最终调用WCFProductService.CreateProduct(ProductDTO productDetails)到WCF服务。这很好,并在数据库中创建产品记录。 CreateProduct方法当前不返回任何内容。

我不想在内存中创建一个大规模的DTO,然后通过网络发送它。我的目标是更多地创建产品,然后添加AddSomething,AddSomething作为单独的任务。

为此,我有一个按钮AddAttribute。添加属性必须在WCF服务级别的产品上下文中工作,因此我需要在AddAttributeDTO中发送ProductId。当然,在这个阶段,ProductDTO中没有Id,因为它在被发送到WCF服务之前完全在内存中创建。

我假设WCF服务调用CreateProduct需要返回某种包含Id和其他数据的对象

这应采取什么形式?
是否有关于此的指导/最佳实践的文件?
那么如何使用它来启用相关按钮?

提前感谢您的任何帮助

亚历

1 个答案:

答案 0 :(得分:1)

您可以简单地将DTO返回给消费者,添加您需要的任何信息。

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

您的OperationContract看起来像

public AddProductResponse AddProduct(YourProductDto dto)
{
}

我还想补充一下你对现有产品中添加'部件'的看法可能有些过分。除非你的产品包含100000个属性,否则它不会消耗你应该担心的那种内存。使用单个DTO以及相应的添加,更新等方法来维护更简洁,更简单。