gpt4 book ai didi

c# - 具有 Silverlight 4 WCF RIA 域服务的复杂类型

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:17 25 4
gpt4 key购买 nike

经过广泛的谷歌搜索后,我仍然在用头撞墙。

我正在尝试获取域服务以将对象列表返回给客户端。我的对象是

[DataContract]
public class MyComplexType {
[Key]
[DataMember]
public int Id { get; set; }
[DataMember]
public string SomeString { get; set; }
[DataMember]
public IEnumerable<MySubType> SubTypes { get; set; }
}

[DataContract]
public class MySubType {
[Key]
[DataMember]
public int Id { get; set; }
[DataMember]
public string AnotherString { get; set; }
}

领域服务有以下内容

[Query]
[Invoke]
public IQueryable<MyComplexType> GetMyComplexTypes() {
/* return stuff */
}

但是在客户端,MyComplexType 对象没有 SubTypes 属性,我尝试添加该属性:

[DataMember]
public int ComplexTypeId { get; set; }

...到 MySubType,以及属性:

[Association("SubType_FK", "Id", "ComplexTypeId")]

...到 MyComplexType 中的 SubTypes 属性。

但它仍然没有将 SubTypes 属性推送到客户端。我有另一个对象(相同的原理,但使用真实代码),其中 SubTypes 等效项位于客户端 POCO 但它始终为空(无论从服务器返回什么)。

我觉得我一定在这里遗漏了一些东西,这应该不会那么困难吧?任何帮助或解释或指向有用资源的指导都将不胜感激。

更新:我发现如果我将以下查询添加到域服务中:

    public IQueryable<MySubType> GetMySubTypes() {
throw new NotImplementedException();
}

我现在可以从客户端访问 MyComplexType.SubType 属性,但是当我使用以下代码对其进行测试时...

_Context.Load(_Context.GetMyComplexTypesQuery(),
r => {
myComplexTypes = r.Entities;
var noCts = myComplexTypes.Count();
foreach (var ct in myComplexTypes) {
var noSts = ct.SubTypes.Count();
}
}, null);

我对其进行调试,我创建了两个复杂类型(因此 noCts 为 2),但对于每次迭代,noSts 为 0,尽管我在服务器端添加了子类型。

有什么想法吗?

最佳答案

你可能只需要添加[ComplexType]属性:

using System.ComponentModel.DataAnnotations;

[ComplexType]
public class MyComplexType {
public int Id { get; set; }
public string SomeString { get; set; }
public IEnumerable<MySubType> SubTypes { get; set; }
}

[ComplexType]
public class MySubType {
public int Id { get; set; }
public string AnotherString { get; set; }
}

[DataContract][DataMember] 属性是可选的。它们由 WCF RIA 自动推断。

关于c# - 具有 Silverlight 4 WCF RIA 域服务的复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com