【问题标题】:WCF and Linq 2 SQLWCF 和 Linq 2 SQL
【发布时间】:2010-11-25 12:28:59
【问题描述】:

我正在尝试使用从 Linq 到 SQL 的数据公开一个简单的 WCF REST 服务。

问题是当我有子对象时(比如一个用户对象,它有 UserAction 对象作为子对象) - 我从服务中得到一个空的结果。看起来 - 它自己的服务正在运行,并且正在根据需要从 Linq 获取数据,但在客户端 - 没有显示任何数据。

如果我删除所有子对象,它就可以正常工作。

任何想法为什么会发生这种情况以及如何解决?

编辑:为该部分添加了网络服务代码

[WebGet(UriTemplate = "TopUpdaters/{topx}",
        ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json)]
public List<User> TopUpdaters(string topx)
{
   FulltankRepository rep = new FulltankRepository();
   var topusers = rep.GetTopUpdaters(int.Parse(topx));

   return topusers;
}

谢谢!

【问题讨论】:

  • 您是否尝试对方法进行单元测试并查看天气数据是否来自服务?如果没有,那么服务中是否有错误??放置 Try {} catch{} 块以查看获取记录时是否出现任何错误
  • 并检查获取子记录的 Linq 查询,我想有问题,因为你已经说过它在没有子记录时显示数据
  • 可以给我们看一下服务合约接口签名吗?
  • 没有错误 - 一切正常,直到服务“返回”。全部根据需要返回。毕竟只是暴露的服务不起作用:)
  • 添加服务代码

标签: wcf linq-to-sql rest


【解决方案1】:

如果您已确认子项存在于服务器的内存中,那么这听起来像是一个序列化问题。检查 User 上的 UserAction 属性是否标记为序列化

[DataMember]
public List<UserAction> UserActionChild
{
get;
set;
}

【讨论】:

  • 好的 - 这就是答案。必须在 Linq 编辑器中将序列化更改为单向 - 如您所述,它添加了所需的序列化。
猜你喜欢
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2011-09-23
相关资源
最近更新 更多