RIA Services Custom Class
Используя Silverlight 3 и RIA Services, в моем веб-проекте определен следующий класс:
public class RegionCurrentStates
{
public RegionCurrentStates()
{
Name = String.Empty;
States= new List<State>();
}
[Key]
public string Name { get; set; }
public List<State> States{ get; set; }
}
Однако на клиенте класс отображается только со свойством Name. Штаты нигде не появляются. Я предполагаю, что я должен пропустить какие-то метаданные, но я не знаю, что это такое.
Редактировать: я должен уточнить, что State является сгенерированным классом LinqToSql.
1 ответ
Решение
Пожалуйста, смотрите: Обзор услуг RIA - 4.8.1 Возврат связанных объектов.
В сервисной функции, в которой вы возвращаете список RegionCurrentStates, добавьте DataLoadOptions, а в описании метаданных добавьте атрибут "Включить" в "Состояния".
Добавьте DataLoadOption в функцию запроса, определенную в классе домена.
public IQueryable<RegionCurrentStates> GetRegionCurrentStates()
{
DataLoadOptions loadOpts = new DataLoadOptions();
loadOpts.LoadWith<RegionCurrentStates>(r => r.States);
this.Context.LoadOptions = loadOpts;
return this.Context.RegionCurrentStates;
}
В метаданных:
//This class in generated by RIA wizard when you create
//your DomainService (based on LinqToSqlDomainService) and you check
//[x]Generate metadata class in wizard window
//file: MyService.metadata.cs
[MetadataTypeAttribute(typeof(RegionCurrentStates.RegionCurrentStatesMetadata))]
public partial class RegionCurrentStates
{
internal sealed class RegionCurrentStatesMetadata
{
[Include] //Add (only) this line
public List<State> States{ get; set; }
}
}
Удачи.