我是linq的新手,我正在尝试编写更新声明。
我有两个表,tblProject和tblPage。这两个是通过tblPage中的外键链接的。
因此,当尝试在tblPage中创建一行时,我有 我想知道的是通过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);
答案 0 :(得分: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”只是为了重新插入它。
答案 1 :(得分:0)
我认为你的方式是正确的,但你的方式会产生额外的电话。
您可以替换
page.Project = db.ProjectSet.Single(p => p.ProjectId == projectId);
与
page.ProjectReference.EntityKey = new EntityKey("EverythingEngineEntities.Project", "ProjectID", projectId);