Je suis une une Référence Circulaire de la Sérialisation d'Erreur bien que, à ma connaissance, je n'ai pas toutes les références circulaires. Je suis de la récupération d'un ensemble de Commandes à partir de la base de données et de les envoyer au client sous forme de JSON. Tout le code est indiqué ci-dessous.
C'est le message d'erreur:
Erreur
Une référence circulaire a été détecté lors de la sérialisation d'un objet de type 'System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941ab96bc61230419ea8ac42c9100e6072812'. Description: Une exception non gérée s'est produite pendant l'exécution de la demande web actuelle. Veuillez passer en revue les trace de la pile pour plus d'informations sur l'erreur et où il trouve son origine dans le code.
Détails De L'Exception: Système.InvalidOperationException: Un référence circulaire a été détectée pendant l' la sérialisation d'un objet de type 'System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941ab96bc61230419ea8ac42c9100e6072812'.
Source De L'Erreur:
Une exception non gérée s'est généré au cours de l'exécution de la demande web. Les informations concernant les origine et l'emplacement de l'exception peut être identifié à l'aide de l'exception trace de la pile ci-dessous.
Mes classes sont comme suit:
Afin
public class Order
{
[Key]
public int OrderId { get; set; }
public int PatientId { get; set; }
public virtual Patient Patient { get; set; }
public int CertificationPeriodId { get; set; }
public virtual CertificationPeriod CertificationPeriod { get; set; }
public int AgencyId { get; set; }
public virtual Agency Agency { get; set; }
public int PrimaryDiagnosisId { get; set; }
public virtual Diagnosis PrimaryDiagnosis { get; set; }
public int ApprovalStatusId { get; set; }
public virtual OrderApprovalStatus ApprovalStatus { get; set; }
public int ApproverId { get; set; }
public virtual User Approver { get; set; }
public int SubmitterId { get; set; }
public virtual User Submitter { get; set; }
public DateTime ApprovalDate { get; set; }
public DateTime SubmittedDate { get; set; }
public Boolean IsDeprecated { get; set; }
}
Patient
public class Patient
{
[Key]
public int PatientId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleInitial { get; set; }
public bool IsMale;
public DateTime DateOfBirth { get; set; }
public int PatientAddressId { get; set; }
public Address PatientAddress { get; set; }
public bool IsDeprecated { get; set; }
}
Période De Certification
public class CertificationPeriod
{
[Key]
public int CertificationPeriodId { get; set; }
public DateTime startDate { get; set; }
public DateTime endDate { get; set; }
public bool isDeprecated { get; set; }
}
Agence
public class Agency
{
[Key]
public int AgencyId { get; set; }
public string Name { get; set; }
public int PatientAddressId { get; set; }
public virtual Address Address { get; set; }
}
Diagnostic
public class Diagnosis
{
[Key]
public int DiagnosisId { get; set; }
public string Icd9Code { get; set; }
public string Description { get; set; }
public DateTime DateOfDiagnosis { get; set; }
public string Onset { get; set; }
public string Details { get; set; }
}
OrderApprovalStatus
public class OrderApprovalStatus
{
[Key]
public int OrderApprovalStatusId { get; set; }
public string Status { get; set; }
}
L'utilisateur
public class User
{
[Key]
public int UserId { get; set; }
public string Login { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string NPI { get; set; }
public string Email { get; set; }
}
NOTE: CLASSE D'ADRESSE EST UNE NOUVELLE ADDITION AU MONTAGE
Adresse
public class Address
{
[Key]
public int AddressId { get; set; }
public string StreetAddress { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Phone { get; set; }
public string Title { get; set; }
public string Label { get; set; }
}
Le code qui exécute la sérialisation est ici:
Extrait de OrderController
public ActionResult GetAll()
{
return Json(ppEFContext.Orders, JsonRequestBehavior.AllowGet);
}
Merci