Как получить полный объект с помощью Code First Entity Framework 4.1 - PullRequest
4 голосов
/ 07 апреля 2011

Я пытаюсь вернуть как JSON полностью глубокий объект (со всеми заполненными связями внешнего ключа), но я получаю нулевые значения для всех ссылочных объектов.

Вот вызов для получения объекта:

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

А вот и сам объект Order:

public class Order
{
    public int Id { get; set; }

    public Patient Patient { get; set; }

    public CertificationPeriod CertificationPeriod { get; set; }

    public Agency Agency { get; set; }

    public Diagnosis PrimaryDiagnosis { get; set; }

    public OrderApprovalStatus ApprovalStatus { get; set; }

    public User Approver { get; set; }

    public User Submitter { get; set; }

    public DateTime ApprovalDate { get; set; }

    public DateTime SubmittedDate { get; set; }
    public Boolean IsDeprecated { get; set; }
}

Я еще не нашел хорошего ресурса по использованию аннотаций EF 4.1.Если бы вы могли предложить хороший вариант с ответом, вы могли бы дать мне ссылку, и этого было бы достаточно для меня!

С уважением,

Гвидо

Обновление

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

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Добавьте ключевое слово virtual перед связанными объектами:

public class Order
{
    public int Id { get; set; }

    public virtual Patient Patient { get; set; }

    public virtual CertificationPeriod CertificationPeriod { get; set; }

    public virtual Agency Agency { get; set; }

    public virtual Diagnosis PrimaryDiagnosis { get; set; }

    public virtual OrderApprovalStatus ApprovalStatus { get; set; }

    public virtual User Approver { get; set; }

    public virtual User Submitter { get; set; }

    public DateTime ApprovalDate { get; set; }

    public DateTime SubmittedDate { get; set; }
    public Boolean IsDeprecated { get; set; }
}

Вы можете получить ошибку A circular reference was detected while serializing an object..., если ваши объекты имеют ссылки друг на друга. В этом случае вам нужно будет создать ViewModel или что-то подобное, чтобы преодолеть эту проблему. Или используйте LINQ для проецирования анонимного объекта.

2 голосов
/ 07 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...