Когда я вернусь IEnumerable<ProgramRange>
исключение брошено:Возвращаясь IEnumerable <> из службы WCF вызывает исключение: Базовое соединение закрыто: соединение было закрыто неожиданно
Базовое соединение закрыто: соединение было закрыто неожиданно.
Класс ProgramRange выглядит следующим образом:
[DataContract]
public partial class ProgramRange
{
public ProgramRange()
{
this.GradeVariants = new HashSet<GradeVariant>();
}
[DataMember]
public int ID { get; set; }
[DataMember]
public int Range { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public virtual ICollection<GradeVariant> GradeVariants { get; set; }
}
Коллекция содержит только восемь пунктов, так что я не думаю, что это <dataContractSerializer maxItemsInObjectGraph="2147483647" />
, который часто предлагается.
Когда я выборки данных из контекста я .ToList()
, поэтому он не может быть, что:
public IEnumerable<ProgramRange> GetAll()
{
using (Entities dbContext = new Entities())
{
return dbContext.ProgramRanges.ToList();
}
}
Я пытался добавить класс ProgramRange к известным типам вашей службы в реализации:
[ServiceBehavior]
[ServiceKnownType(typeof(ProgramRange))]
public class ValidationService : IValidationService
Я попытался возвращение нескольких других вещей, просто тест: ProgramRange
(работ), IEnumerable<string>
(работы), List<ProgramRange>
(does't работы)
Я знаю, что на stackowerflow есть несколько вопросов по этому вопросу, и я попробовал много предложений, но я не могу заставить его работать.
Edit:
Вот класс GradeVariant:
[DataContract]
public partial class GradeVariant
{
public GradeVariant()
{
this.GradeVariantRules = new HashSet<GradeVariantRule>();
}
[DataMember]
public int ID { get; set; }
[DataMember]
public int GradeTypeID { get; set; }
[DataMember]
public int ProgramRangeID { get; set; }
[DataMember]
public Nullable<int> ProgramID { get; set; }
[DataMember]
public Nullable<int> ApprenticeID { get; set; }
[DataMember]
public Nullable<int> Prefix { get; set; }
[DataMember]
public Nullable<bool> IV { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public virtual GradeType GradeType { get; set; }
[DataMember]
public virtual ProgramRange ProgramRange { get; set; }
[DataMember]
public virtual ICollection<GradeVariantRule> GradeVariantRules { get; set; }
}
Может ли это быть проблема, даже если класс коллекции вариант в пределах программы пусто? – FatAlbert
Думаю, ты здесь. Проблема была связана с GradeVariant. На данный момент я удалил «virtual», который предотвращает загрузку связанных данных (не знаю, как работает Entity Framework, почему виртуальная машина загружает связанные данные. Рано или поздно мне тоже нужно избавиться от нулевых типов. Спасибо за вашу помощь! – FatAlbert