【发布时间】:2013-12-26 20:57:24
【问题描述】:
您好,我编写了 WCF 服务,该服务首先使用实体框架代码实体作为数据合同,例如我有 Step 实体:
[DataContract(IsReference=true)]
public class Step
{
[Key]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public int Order { get; set; }
[DataMember]
public string ExpectedResult { get; set; }
[DataMember]
public bool ContinueOnFail { get; set; }
#region Navigation Properties
[DataMember]
public virtual Test Test { get; set; }
#endregion
}
我的服务函数中有返回 IEnumrable
[ServiceContract]
public interface IStepsService
{
IEnumerable<Step> GetSteps();
}
我的服务的目标平台是Any CPU 现在我需要将目标平台更改为 x86 这是棘手的部分:没有抛出错误,但我的服务现在总是返回一个空列表! 有人知道为什么会这样吗?
我读到了这个问题:How to change WCF project Platform Target to x86? 但它没有回答我的问题。 如果您帮助我,我会很高兴,因为该项目必须是 x86! 谢谢。
我正在添加我的实现 在服务器中,实现如下所示:
try
{
steps=(from step in db.Steps
select step).ToArray();
}
catch (Exception e)
{
Tracer.Write(Tracer.TraceLevel.ERROR, "Error in getting steps from database", e);
return null;
}
return steps;
在客户端它只是使用这个......顺便说一下,我不知道它是否重要,但客户端是 ASP.NET MVC 4,它将服务引用添加到这个服务......和 db 类是继承自实体框架DbContext类的类...
【问题讨论】:
-
你调试了吗?在没有看到任何代码的情况下,不太可能有人会在这里立即提出解决方案。
-
是的,我在 x86 时对其进行了调试不抛出异常!
-
WCF 测试客户端是否也返回一个空列表?
-
你能根据你的服务实现提供一个重现吗?
-
你试过返回
List<Step>吗?
标签: c# wcf datacontract