WCF RIA Services / Linq-to-SQL: включить свойство из сторонних таблиц - PullRequest
0 голосов
/ 02 декабря 2010

Допустим, у вас есть следующие связанные таблицы (Stores -> Categories -> Products)

  • Магазины
  • Категории
  • Продукты

И яхочу создать сетку для редактирования Products.Это просто с RIA Services.Но что, если я также хочу показать StoreName из Stores и CategoryName из Categories в моем списке Products?Два дополнительных столбца должны быть доступны только для чтения.

Как это можно реализовать?

Обновление : я пытаюсь сделать это в простейшей форме.Это не ViewModel, только перетаскивание, код (если есть) будет идти в коде позади.Я использую Ling2Sql и возвращаю реализацию по умолчанию для запроса GetProducts.

С уважением

Larsi

Ответы [ 2 ]

0 голосов
/ 13 декабря 2010

Самый простой способ сделать это - аннотировать ваш файл метаданных для продуктов и позволить сетке генерировать столбцы для вас.

Например, ваши таблицы, вероятно, будут выглядеть примерно так:

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 голосов
/ 02 декабря 2010

Как у вас это настроено?Вы привязываетесь к ViewModel или просто используете код позади?Отправляет ли веб-служба список объектов Product LINQ или вы занимаетесь чем-то другим?

Существует множество вариантов, но это действительно зависит от того, что вы пытаетесь сделать.

...