2009-04-23 70 views
2

我是linq的新手,我试图编写更新语句。这是在linq中插入关系的正确方法

我有两个表,tblProject和tblPage。这两个通过tblPage中的外键链接。

于是试图到的tblpage创建行这一点,日INQ查询时,我有

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插入一行到实体的正确途径。

很抱歉,如果这一切都不是有道理的:)

编辑:

我格外有兴趣,如果这条线是正确的做法

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

回答

3

您几乎已经完成......你不得不实际插入它(你已经创建了它,这是第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

对不起,那只是我作为松弛,而不是将它添加代码:S – 2009-04-23 13:07:01

0

我认为你的方式是正确的,但你的方式会创建一个额外的电话。

可以更换

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


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

Read this

相关问题