У меня есть приложение SLA/WCF RIA Services/EF 4. У меня возникли проблемы с получением моей включенной сущности в мой контекст данных SL4.
В части обслуживания на стороне сервера приложения это мой метод:
 [Query(IsDefault = true)]
    public IQueryable<ToolingGroup> GetToolingGroups()
    {
        var groups = this.ObjectContext.ToolingGroups.Include("MetaData").OrderBy(g => g.Name);
        return groups; //breakpoint set here
    }
Я назначил его группам var, чтобы они могли быть проверены до возвращения метода. Если я установил точку останова до того, как метод вернется и добавит строку в окно "Мои часы", появится MetaData:
groups.First().MetaData
Когда я возвращаю метод и проверяю его в завершенном событии silverlight ui, MetaData имеет значение null.
void loadOperation_Completed(object sender, System.EventArgs e)
    {
        grid.ItemsSource = _toolingContext.ToolingGroups;
        UpdateUI(); //breakpoint set here
    }
Когда я делаю это в своем окне просмотра, MetaData имеет значение null:
_toolingContext.ToolingGroups.First().MetaData
Я проверил, чтобы ToolingGroup, возвращенная вызовом .First() в обоих случаях, была той же сущностью, и она была.
Почему MetaData потеряна (например, null) между методом службы и моим методом ui?
РЕШЕНИЕ:
// The MetadataTypeAttribute identifies ToolingGroupMetadata as the class
// that carries additional metadata for the ToolingGroup class.
[MetadataTypeAttribute(typeof(ToolingGroup.ToolingGroupMetadata))]
public partial class ToolingGroup
{
    // This class allows you to attach custom attributes to properties
    // of the ToolingGroup class.
    //
    // For example, the following marks the Xyz property as a
    // required property and specifies the format for valid values:
    //    [Required]
    //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
    //    [StringLength(32)]
    //    public string Xyz { get; set; }
    internal sealed class ToolingGroupMetadata
    {
        // Metadata classes are not meant to be instantiated.
        private ToolingGroupMetadata()
        {
        }
        public int Id { get; set; }
        [Include] // Added so MetaData gets serialized
        public MetaData MetaData { get; set; }
        public Nullable<int> MetaDataId { get; set; }
        public string Name { get; set; }
        public ToolingCategory ToolingCategory { get; set; }
        public int ToolingCategoryId { get; set; }
        public EntityCollection<ToolingType> ToolingTypes { get; set; }
    }
}
