私が返すIEnumerable<ProgramRange>
と、例外がスローされます:
基になる接続が閉じられました:接続が予期せず閉じられました。
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" />
コレクションには8つのアイテムしか含まれていないので、よく提案されるものではないと思います。
コンテキストからデータをフェッチするときは、次の.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>
(動作しない)
ここstackowerflowに関するいくつかの質問があることを知っており、多くの提案を試しましたが、それを機能させることができません。
編集:
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; }
}