2009-04-23 4 views
2

저는 linq을 처음 사용하고 업데이트 구문을 작성하려고합니다.linq에 관계를 삽입하는 올바른 방법입니까

두 개의 테이블 tblProject와 tblPage가 있습니다. 두 개는 tblPage의 외래 키를 통해 연결됩니다. tblPage에 INQ 쿼리 일이 그것을 행을 만들려고 할 때

그래서 나는 내가 알고 싶은 것은이 엔티티에 LINQ를 통해 행을 삽입하는 올바른 방법입니다

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

있습니다. 이 중 어느 것도 의미 :) 수없는 경우

죄송합니다

편집 :이 줄 당신은 거의 완료 올바른 방법

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

답변

3

경우

내가 관심이 particulary 해요 ... 당신은 실제로 그것을 삽입해야한다. (당신은 그것을 만들었다. 이것은 1 단계이다.)

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

내가 그이 SQL 구문에 LINQ를 깨닫는다 ...하지만 EF 꽤 가까이 :

코드는 무엇인가 같다.

편집 : 나는 가까이 ... 그것은

db.Pages.Add(page); 

EDIT2가의 EF을 위해 : 그건 그렇고, 당신은 당신이 뭔가를하고 있다면하지 서버를 공격을 할 것을 언급하는 것을 잊었다 위와 같이 간단합니다. 나는 당신이 EF에서 같은 것을 할 수 있습니다 확신 해요 :

page.Project.ProjectID = projectID; 

그래서 당신은 단지 그것을 다시 삽입하는 "db.ProjectSet.Single"를 다운로드 할 필요가 없습니다.

+0

죄송으로

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


을 대체 할 수

, 그냥 나를 여유있는 그것에게 코드를 추가하지 먹으 렴 : S를 –

0

나는 당신의 방법이 정확하다고 생각하지만 당신의 방법은 여분의 전화를 만들 것입니다. 당신은

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

Read this

관련 문제