Моя модель Entity Framework генерируется из базы данных SQL Server.Так как мне нужен доступ к базе данных из Silverlight, я сгенерировал DomainService для RIAServices на основе модели EF.Product
является одним из автоматически сгенерированных 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!
}
}
РЕДАКТИРОВАТЬ: Product
класс автоматически генерируется в 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
{
//..
}