2010-12-02 60 views
0

假设你有以下的相关表(Stores -> Categories -> ProductsWCF RIA服务/ LINQ到SQL:包括从国外桌财产

  • 房屋
  • 分类
  • 产品

而且我想创建一个网格来编辑Products。 RIA服务很简单。但是如果我还想在Products列表中显示StoreNameStoresCategoryNameCategories怎么办?两个额外的列应该是只读的。

这是如何实现的?

更新:我试图以最简单的形式做到这一点。这是没有ViewModel,只拖放,代码(如果有的话)将在代码隐藏。我正在使用Ling2Sql并返回GetProducts查询的默认实现。

问候

Larsi

回答

0

你怎么有这个设置?你是绑定到ViewModel还是只使用后面的代码? Web服务是否发送了一个Product LINQ对象列表,或者您在做其他事情吗?

有很多选择,但它取决于你想要做什么。

+0

对不起,有点不清楚。我已经添加了一些额外的信息 – Larsi 2010-12-02 20:27:31

0

最简单的方法是为产品注释元数据文件并让网格为您生成列。

例如,您的表可能会是这个样子:

Product 
    int Id; 
    string ProductName; 
    int CategoryId; 

Category 
    int Id; 
    string CategoryName; 
    int StoreId; 

Store 
    int Id; 
    string StoreName; 

现在,当你创建你的服务,你可以包括3台/从你的域模型的实体,具有其产生的元数据文件为你。在该文件中,请正确注释对象,如下所示:

internal sealed class ProductMetadata 
{ 
    [Key] 
    [Bindable(false)] 
    [Display(AutogenerateField=false)] 
    public int Id { get; set; } 

    [Bindable(true, BindingDirection.TwoWay)] 
    [Display(Name="Product")] 
    [StringLength(20, MinimumLength=3)] 
    public string ProductName { get; set; } 

    [Bindable(false)] 
    [Display(AuteogenerateField=false)] 
    public Category Category { get; set; } 

    [Required] 
    [Bindable(false)] 
    [Display(AutogenerateField=false)] 
    public CategoryId { get; set; } 
} 

您可以对其他对象的元数据执行相同操作。

你可能需要做的唯一的另一件事是添加其他2列到你的网格,并将它们映射到Product.Category.CategoryName和Product.Category.Store.StoreName

+0

嗨,对于迟到的回复感到抱歉,但是当我调用GetProducts时,它是如何知道它应该包含Store信息?它是否总是包含所有forrigin表?或者它是否包含一些元数据? – Larsi 2011-01-03 07:19:32