【发布时间】:2016-10-23 20:24:22
【问题描述】:
在我的网络应用程序中,当用户登录时,我有一个登录页面,我需要将包含播放器实体集的对象帐户返回到网络应用程序:
public Account Login(string email,string password)
{
var query = (from p in db.Accounts
where (p.EMAIL.Equals(email) && p.PASSWORD.Equals(password))
select new { EMAIL=p.EMAIL,PASSWORD=p.PASSWORD,NAME=p.NAME,Players=p.Players }).FirstOrDefault();
return new Account { EMAIL = query.EMAIL, PASSWORD = query.PASSWORD, NAME = query.NAME,Players=query.Players};
}
Players 是 EntitySet 的类型
我的界面:
[OperationContract]
[WebGet(UriTemplate = "/Login/{email}/{password}", ResponseFormat = WebMessageFormat.Json)]
Account Login(string email,string password);
如果 Account 没有玩家,则 get 操作有效,我可以看到返回的 json。
{"EMAIL":"#####@gmail.com ","NAME":"Test","PASSWORD":"#####","Players":[]}
如果 Account 有播放器,浏览器就会挂掉,没有任何工作。
我知道这与 player 是 EntitySet 的事实有关,但是如何实现呢?
【问题讨论】:
-
尝试在 p.Players 上调用 ToList()。您可能还需要进行选择。
-
您好,尝试一下,但我无法使用 List 创建帐户,因为 List != EntitiySet,REST 应该知道如何在幕后执行此操作。
-
好的...尝试从 p.Players 中选择特定字段,例如 p.Players.Select(p => new { p.Name, p.Whatever, p.Etc });我打赌序列化程序在循环属性或其他方面有困难。我在实体框架 4 中遇到了类似的问题。
-
谢谢,不幸的是我应该返回帐户,任何更改都不会让我做演员。
标签: asp.net json wcf rest linq-to-sql