我的实体框架模型是从 SQL Server 数据库生成的。由于我需要从 Silverlight 访问数据库,因此我根据 EF 模型为 RIAServices 生成了一个 DomainService。Product
是自动生成的之一EntityObject
对应表Product
。我正在尝试通过自定义类CompositeData
到 Silverlight 客户端,如图所示。问题是CurrentProduct
字段在客户端中不可访问,但其他字符串/整数字段可以访问。怎样才能使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!
}
}
EDIT:
Product
类在 Model 1.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
{
//..
}