我的實體框架模型是從SQL Server數據庫生成的。由於我需要從Silverlight訪問數據庫,因此我爲EF模型生成了用於RIAServices的DomainService。 Product
是對應於表Product
的自動生成的EntityObject
之一。我試圖將自定義類CompositeData
傳遞給Silverlight客戶端,如圖所示。問題是CurrentProduct
字段在客戶端不可訪問,但其他字符串/ int字段是可訪問的。如何從客戶端訪問CurrentProduct
?無法通過RIA服務訪問EntityObject類型
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
{
//..
}
您是否在Silverlight客戶端中引用了一個程序集,其中定義了Product類型? –
請參閱編輯問題 – Nemo