C# 无法传输列表:基础连接已关闭

C# 无法传输列表:基础连接已关闭,c#,.net,wcf,entity-framework,webclient,C#,.net,Wcf,Entity Framework,Webclient,我在WCF服务中传递对象内的列表时遇到问题。我有这门课: [DataContract] public class Field { /*Necessary Information*/ [DataMember] public int ID { get; set; } [DataMember] public String Picture { get; set; } [DataMember] public double TypicalAge { g

我在WCF服务中传递对象内的列表时遇到问题。我有这门课:

[DataContract]
public class Field
{
    /*Necessary Information*/
    [DataMember]
    public int ID { get; set; }
    [DataMember]
    public String Picture { get; set; }
    [DataMember]
    public double TypicalAge { get; set; }
    [DataMember]
    public List<Report> ReportHistory { get; set; }
}

[DataContract]
public class Report
{
    [DataMember]
    public long ID { get; set; }
    [DataMember]
    public ReportTypes Type { get; set; }
    [DataMember]
    public int FieldID { get; set; }
    [DataMember]
    public String Head { get; set; }
    [DataMember]
    public String Body { get; set; }
    [DataMember]
    public DateTime TimeStamp { get; set; }
}
客户端中的代码:

 client = new FieldServiceClient();
 var fieldsByIDs = client.GetFieldsByIDs(new int[] { 1, 2 });
界面:

public interface IFieldService
{

    [OperationContract]
    bool CheckConnection();


    [OperationContract]
    List<Field> GetFieldsByIDs(List<int> listOfIDs); //max 30 fields
}
公共接口服务
{
[经营合同]
bool-CheckConnection();
[经营合同]
List GetFieldsByIDs(List listOfIDs);//最多30个字段
}
我该怎么办?

尝试添加:

context.Configuration.LazyLoadingEnabled = false;
之后

此外,请更改以下内容:

var fields = context.FieldEntities.Where(x => listOfIDs.Contains(x.ID)).Select(FieldEntityToField).ToList();
致:


我解决了这个问题。DB wan中的信息与枚举中的信息不同,因此将其更改为枚举中的数字可以修复此问题。不是代码问题。

显示出错的代码。为什么要传递
int[]
而不是
列表?服务器不知何故要求数组。这没关系,因为我把完整的列表放到了服务器上。你能添加你的服务接口吗。DB wan中的信息与枚举中的不一样,因此将其更改为枚举中的数字无法修复此问题!。在我这样做之后(context.ContextOptions.LazyLoadingEnabled=false;),上下文返回服务器中的空报告列表!因此,不管怎样,客户端都会得到一个空列表,当删除这一行时,有7个报告。试着传递那些报告给我上面的错误。修改了我的答案-这样排序吗?它修复了服务器中丢失的报告。但还是不行!当客户端试图从函数获取答案时,我仍然会收到错误。
using (var context = new FieldBookEntities())
{
var fields = context.FieldEntities.Where(x => listOfIDs.Contains(x.ID)).Select(FieldEntityToField).ToList();
var fields = context.FieldEntities.Include("ReportHistory").Where(x => listOfIDs.Contains(x.ID)).Select(FieldEntityToField).ToList();