【问题标题】:Custom class with an entity and RIA Services/Silverlight具有实体和 RIA 服务/Silverlight 的自定义类
【发布时间】:2012-02-25 01:13:30
【问题描述】:

我有一个看起来像这样的课程:

[DataContract]
public class TestBatchWithHistoryResult
{
    [Key]
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string Description { get; set; }
    [DataMember]
    public string LastRequestedBy { get; set; }
    [DataMember]
    public DateTime? LastRun { get; set; }
    [DataMember]
    public Collection<string> LastConfigurations { get; set; }
    [DataMember]
    public TestBatch Entity { get; set; }
}

当我构建网站和Silverlight项目时,发现在Silverlight端的“自动生成”代码中没有创建Entity属性,但所有其他属性都存在。

什么会阻止实体属性被创建?

谢谢

迈克尔

【问题讨论】:

    标签: wcf silverlight wcf-ria-services


    【解决方案1】:

    如果您的任何服务均未引用数据合同,则该合同将不存在。仅生成引用的数据合同。如果它没有被引用但它应该被引用(即,如果它是从返回的类型继承的类型,并将在某个时候返回)使用 ServiceKnowTypeAttribute 在服务合同的开头声明它。

    【讨论】:

    • 嗨,保罗。由 Entity 属性返回的 TestBatch 类被服务上的其他操作引用,但是在 Silverlight 项目中生成此类时,不会遇到 Entity 属性。我将 TestBatch 和此类的 KnownType 属性放在服务上,但没有效果。
    【解决方案2】:

    对于要在客户端创建的子实体,您需要有一个服务方法在服务器端公开该实体类型,例如:

    public IQueryable<TestBatch> GetTestBatches(){}
    

    而且你还需要在属性上有 Include 属性:

    [Include]
    public TestBatch Entity {get; set;}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多