C# 无法传输列表:基础连接已关闭
我在WCF服务中传递对象内的列表时遇到问题。我有这门课: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
[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();