Это правильный способ вставить отношения в linq - PullRequest
2 голосов
/ 23 апреля 2009

Я новичок в linq и пытаюсь написать заявление об обновлении.

У меня есть две таблицы, tblProject и tblPage. эти два связаны через внешний ключ в tblPage.

Так что, когда я пытаюсь создать строку в tblPage, это будет в моем запросе

    public void CreatePage(int projectId, string pageName, DateTime createdDate, int createdBy, DateTime updatedDate, int updatedBy)
    {
        using (EverythingEngineEntities db = new EverythingEngineEntities())
        {
            Page page = new Page();
            page.Project = db.ProjectSet.Single(p => p.ProjectId == projectId);
            page.LastUpdatedBy = updatedBy;
            page.LastUpdatedDate = updatedDate;
            page.CreatedBy = createdBy;
            page.CreatedDate = createdDate;
            page.PageName = pageName;
        }
    }

Что я хочу знать, так это правильный способ вставки строки через linq в Entities.

Извините, если ничего из этого не имеет смысла:)

Edit:

Мне особенно интересно, правильна ли эта строка

page.Project = db.ProjectSet.Single(p => p.ProjectId == projectId);

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

Вы почти закончили ... вы должны вставить его ... (вы создали его, это шаг 1).

Код выглядит примерно так:

db.Pages.InsertOnSubmit(page);
db.SubmitChanges();

Я понимаю, что это синтаксис LINQ to SQL ... но EF довольно близок.

РЕДАКТИРОВАТЬ: я был близок ... для EF это

db.Pages.Add(page);

EDIT2: Кстати, я забыл упомянуть, что у вас нет , чтобы поразить сервер, если вы делаете что-то простое, как указано выше. Я уверен, что вы можете сделать что-то подобное в EF:

page.Project.ProjectID = projectID;

Таким образом, вам не нужно загружать «db.ProjectSet.Single» только для того, чтобы заново вставить его.

0 голосов
/ 28 сентября 2009

Я думаю, что ваш путь правильный, но ваш путь создаст дополнительный вызов.

Вы можете заменить

page.Project = db.ProjectSet.Single(p => p.ProjectId == projectId);  


с

   page.ProjectReference.EntityKey = new EntityKey("EverythingEngineEntities.Project", "ProjectID", projectId);

Читать это

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