Mój model Entity Framework jest generowany z bazy danych SQL Server. Ponieważ potrzebuję dostępu do bazy danych z Silverlight, wygenerowałem usługę DomainService dla RIAServices w stosunku do modelu EF. Product
jest jednym z autogenerowanych EntityObject
odpowiadającym tabeli Product
. Próbuję przekazać niestandardową klasę CompositeData
do klienta Silverlight, jak pokazano. Problem polega na tym, że pole CurrentProduct
nie jest dostępne w kliencie, ale dostępne są inne pola string/int. W jaki sposób można uzyskać CurrentProduct
od klienta?Nie można uzyskać dostępu do typu EntityObject za pośrednictwem usług RIA
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();
}
}
Po to metoda usługi domeny:
[EnableClientAccess()]
public class LocalDomainService : DomainService
{
public IEnumerable<CompositeData> GetData()
{
List<CompositeData> listData = new List<CompositeData>();
//...
return listData;
}
}
Z Silverlight klienta
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!
}
}
EDIT: Product
klasa jest wygenerowany automatycznie w Model1.Designer.cs
[EdmEntityTypeAttribute(NamespaceName="MyDBModel", Name="Product")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Product : EntityObject
{
//..
}
Robi wygenerowane w projekcie klienta również (w SilverlightProject.g.cs)
/// <summary>
/// The 'Product' entity class.
/// </summary>
[DataContract(Namespace="http://schemas.datacontract.org/2004/07/SilverlightProject")]
public sealed partial class Product : Entity
{
//..
}
Czy klient Silverlight odwołuje się do zespołu, w którym zdefiniowano typ produktu? –
Zobacz edytowane pytanie – Nemo