EF 4.1 - Сначала код - Ошибка сериализации циклической ссылки JSON

Я получаю ошибку сериализации циклических ссылок, хотя, насколько мне известно, у меня нет циклических ссылок. Я получаю набор заказов из базы данных и отправляю их клиенту в формате JSON. Весь код показан ниже.

Это ошибка:

Ошибка

Обнаружена циклическая ссылка насколько мне известно, у меня нет циркулярных ссылок. Я получаю набор заказов из базы данных и отправляю их в ...

Я получаю ошибку сериализации циклических ссылок, хотя, насколько мне известно, у меня нет циклических ссылок. Я получаю набор заказов из базы данных и отправляю их клиенту в формате JSON. Весь код показан ниже.

Это ошибка:

Ошибка

Обнаружена циклическая ссылка насколько мне известно, у меня нет циркулярных ссылок. Я получаю набор заказов из базы данных и отправляю их в ...

Я получаю ошибку сериализации циклических ссылок, хотя, насколько мне известно, у меня нет циклических ссылок. Я получаю набор заказов из базы данных и отправляю их клиенту в формате JSON. Весь код показан ниже.

Это ошибка:

Ошибка

Обнаружена циклическая ссылка при сериализации объекта типа 'System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812'. Описание: необработанное исключение произошло во время выполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации о ошибка и откуда она возникла код.

Сведения об исключении: System.InvalidOperationException: A круговая ссылка была обнаружена во время сериализация объекта типа 'System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812'.

Ошибка источника:

Создано необработанное исключение во время выполнения текущего веб-запрос. Информация о происхождение и местонахождение исключения можно идентифицировать с помощью исключения трассировка стека ниже.

Мои классы следующие:

Заказ

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; }
}

Пациент

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; }
}

Период сертификации

public class CertificationPeriod
{
    [Key]
    public int CertificationPeriodId { get; set; }
    public DateTime startDate { get; set; }
    public DateTime endDate { get; set; }
    public bool isDeprecated { get; set; }
}

Агентство

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; }
}

Диагноз

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; }
}

Пользователь

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; }

}

ПРИМЕЧАНИЕ: КЛАСС АДРЕСА IS НОВОЕ ДОБАВЛЕНИЕ ВО ВРЕМЯ РЕДАКТИРОВАНИЯ

Адрес

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; }
}

Код, выполняющий сериализацию, находится здесь:

Выдержка из OrderController

    public ActionResult GetAll()
    {
        return Json(ppEFContext.Orders, JsonRequestBehavior.AllowGet);
    }

Спасибо

47
задан Paul Sasik 10 October 2011 в 04:32
поделиться