【发布时间】:2016-02-17 01:08:13
【问题描述】:
我已经上传了具有以下合同的服务。
[ServiceContract]
public interface Service
{
[OperationContract]
void CreateThing(Thing thing);
[OperationContract]
List<Thing> RetrieveThings();
}
当我调用创建方法时,一切正常,实例在数据库中创建,我没有收到任何错误。但是,当我检索元素时,出现错误:
远程服务器返回意外响应:(502) Bad Gateway。
奇怪的是,当列表为空时(数据库中没有元素),操作很顺利。更奇怪的是,针对数据库的操作在服务器内部工作,如果我聚合元素的名称并将它们作为字符串发送或打包在类 Thing 的字符串属性中,它也可以!
这是它不起作用时的样子:
public List<Thing> RetrieveThings()
{
List<Thing> output;
using (Context context = new Context())
output = context.Things.ToList();
return output;
}
这是它工作时的样子:
public List<Thing> RetrieveThings()
{
List<Thing> output = new List<Thing>();
using (Context context = new Context())
foreach (Thing thing in context.Things.ToList())
output.Add(new Thing {Id = thing.Id, Name = thing.Name});
return output;
}
我在这里做了什么不同的事情(在引擎盖下而不是有意识地)?显然我可以访问数据库并且我拥有特权。我也可以读出所有信息。不过,出于某种原因,我必须创建对象的副本。而且我需要逐个而不是使用 LINQ 查询。很迷茫……
【问题讨论】:
标签: c# entity-framework linq wcf azure