Заполните реляционные объекты в Entity - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть класс, который выглядит следующим образом:

public partial class Defect
{
    public int DefectID { get; set; }
    public string Title { get; set; }

    public virtual DefectStatus DefectStatus { get; set; }
    public virtual Developer Developer { get; set; }
    public virtual Project Project { get; set; }
}

Когда я называю это:

    var defect = db.Defects.Find(id);


Как я могу заполнить Project реляционнымданные из таблицы проекта?

В настоящее время я делаю следующее defect.Project для заполнения defect.Project

     var defect = db.Defects.Find(id);
     defect.Project = db.Projects.Find(defect.ProjectID);

Но я хочу знать, есть ли лучший способ сделать то же самоевещь

1 Ответ

2 голосов
/ 21 февраля 2012

Если вы все еще находитесь в контексте db, когда запрашиваете проект, то (поскольку вы отметили свойство Virtual), Project будет загружен с отложенной загрузкой.Если вы находитесь вне контекста db, вам нужно загрузить его (как вы делаете), находясь в контексте.

Однако вы можете загрузить сущность Project, не используя ключевое слово Virtual или используя Includeв вашем запросе:

db.Defects.Include("Project").Where(d => d.DefectId.Equals(id));

Это выглядит как лучший справочник для загрузки объектов.

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