Невозможно получить доступ к типу EntityObject через службы RIA.

Моя модель Entity Framework создана из базы данных SQL Server. Поскольку мне нужен доступ к базе данных из Silverlight, я создал DomainService для RIAServices по модели EF. Продукт является одним из автоматически созданных EntityObject , соответствующих таблице Product . Я пытаюсь передать пользовательский класс CompositeData клиенту Silverlight, как показано. Проблема в том, что поле CurrentProduct недоступно в клиенте, но доступны другие поля типа string / int. Как сделать CurrentProduct доступным для клиента?

public class CompositeData
{
    [Key]
    public Guid PKey { get; set; }
    public string CompositeName { get; set; } 
    public string Identity { get; set; }
    public Product CurrentProduct { get; set; }  //Product is an auto-generated EntityObject class

    public CompositeData()
    {
        PKey = Guid.NewGuid();
    }
}

Ниже приводится метод службы домена:

[EnableClientAccess()]
public class LocalDomainService : DomainService
{
   public IEnumerable<CompositeData> GetData()
   {
       List<CompositeData> listData = new List<CompositeData>();
       //...
       return listData;
   }
}

Из клиента Silverlight,

    domService.Load(domService.GetDataQuery(), GetDataCompleted, null);

    private void GetDataCompleted(LoadOperation<CompositeData> compData)
    {
        foreach(CompositeData cdItem in compData.Entities)
        {
            // cdItem.CompositeName is accessible
            // cdItem.CurrentProduct is not accessible!
        }                     
    }

ИЗМЕНИТЬ: Класс продукта автоматически создается в Model1.Designer.cs

    [EdmEntityTypeAttribute(NamespaceName="MyDBModel", Name="Product")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Product : EntityObject
    {
        //..
    }

Он также создается в клиентском проекте (в SilverlightProject.g.cs)

    /// <summary>
    /// The 'Product' entity class.
    /// </summary>
    [DataContract(Namespace="http://schemas.datacontract.org/2004/07/SilverlightProject")]
    public sealed partial class Product : Entity
    {
       //..
    }
6
задан Nemo 22 January 2012 в 12:42
поделиться