【问题标题】:WCF RIA Services / Linq-to-SQL: include property from foreign tablesWCF RIA 服务/Linq-to-SQL:包括来自外部表的属性
【发布时间】:2010-12-02 14:40:11
【问题描述】:

假设你有以下相关表(Stores -> Categories -> Products

  • 商店
  • 类别
  • 产品

我想创建一个网格来编辑Products。这对于 RIA 服务来说很简单。但是,如果我还想在我的Products 列表中显示来自StoresStoreName 和来自CategoriesCategoryName 怎么办?额外的两列应该是只读的。

如何实现?

更新:我正在尝试以最简单的形式进行此操作。那不是 ViewModel,只有拖放,代码(如果有)将进入代码隐藏。我正在使用 Ling2Sql 并返回 GetProducts 查询的默认实现。

问候

拉尔西

【问题讨论】:

    标签: silverlight wcf-ria-services


    【解决方案1】:

    你是如何设置的?您是绑定到 ViewModel 还是仅使用后面的代码? Web 服务是发回 Product LINQ 对象列表还是您在做其他事情?

    有多种选择,但实际上取决于您要做什么。

    【讨论】:

      【解决方案2】:

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

      例如,您的表格可能看起来像这样:

      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

      【讨论】:

      • 嗨,很抱歉回复晚了,但是当我调用 GetProducts 时,它怎么知道它应该包含商店信息?它总是包含所有原始表吗?还是它的一些元数据?
      • @Larsi:iirc,当您调用 myProduct.Category.Store(其中 myProduct 是通过您的 GetProducts 方法返回的产品)时,RIA 服务将延迟加载与该产品关联的类别和商店。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多