gpt4 book ai didi

c# - RIA 服务返回的 Silverlight POCO

转载 作者:太空狗 更新时间:2023-10-29 23:40:06 27 4
gpt4 key购买 nike

我正在使用一个使用 RIA 服务的 Silverlight 5 业务应用程序从服务端返回一个 POCO 类来填充分层菜单。

我最初遇到的 POCO 类问题是 SubMenuItems 属性没有通过 RIA 服务传递,尽管它是在服务端填充的。

原始POCO

public class BusinessModelMenuDto
{
[Key]
[Required]
public int ID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
public IEnumerable<BusinessModelMenuDto> SubMenuItems { get; set; }
}

服务电话

 public IEnumerable<BusinessModelMenuDto> GetCabsHeirarchy()

经过进一步调查,我发现 SubMenuItems 需要 [Include][Association] 属性才能传递数据。第一次使用 ID 关联 => ID 没有给出预期的结果,所以我添加了 ParentID 属性并更改了我的加载代码以填充外键,如下所示。我还更改了 Associate 以从 ID 映射到 Parent ID。

更新的 POCO 类

public class BusinessModelMenuDto
{
[Key]
[Required]
public int ID { get; set; }
public int? ParentID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
[Include]
[Association("SubItems", "ID", "ParentID")]
public IEnumerable<BusinessModelMenuDto> SubMenuItems { get; set; }
}

在服务器端,我目前正在加载两级菜单,因此顶级项目包含子项目的集合,但在其下方没有更多的子项目。

我遇到的问题是,当 RIA 服务通过网络发送集合时,层次结构变得困惑。我已确认返回的内容结构正确,但未正确到达客户端。顶层没问题,但第二层 (SubMenuItems) 混淆了,并且出现了两个更深的 SubMenuItems 层。

知道我做错了什么吗?我假设问题出在关联或同一 POCO 对象 (BusinessModelMenuDto) 被用于多个级别这一事实。

最佳答案

我们发现我们必须为项目 Key 使用 Guid,并在服务器上为其分配一个唯一值,然后再传回客户端。

所以你的类定义会变成:

public class BusinessModelMenuDto
{
[Key]
[Required]
public Guid ID { get; set; }
public Guid? ParentID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
[Include]
[Association("SubItems", "ID", "ParentID")]
public IEnumerable<BusinessModelMenuDto> SubMenuItems { get; set; }
}

然后当你创建一个新元素时设置ID:

ID = Guid.NewGuid();

关于c# - RIA 服务返回的 Silverlight POCO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13968501/

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