SubmitChanges插入外部关系的新记录,而不是使用指定的记录

时间:2010-12-05 13:40:31

标签: c# linq linq-to-sql submitchanges

我得到了以下有效关系的表格,如下所示:

 Report
      ------>ReprotDataSource
                --------->SharePointDomain

现在,当我尝试以下操作(将新的ReprotDataSource链接到选定的SharePointDomain)时,它会插入新的SharePointDomain记录,而不是将其引用到具有id(2)的SharePointDomain

//Create new Object
ReportDataSource rprtDS = new ReportDataSource
{
  Name = rprtDSSelected.Name,
  Parent = rprtDSSelected.Parent,
  CreatedBy = Environment.UserName,
  CreationDate = DateTime.Now,
  Source = rprtDSSelected.Source,
  Type = rprtDSSelected.Type
};

  if (rprtDS.Type == "SP List")
  //here is the issue
  rprtDS.SharePointDomain = selectedSharePointDomain;//its id = 2
  //Add to EntitySet
  TheReport.ReportDataSources.Add(rprtDS);
  TheReport.Save();

当我将id我自己设置为(2)

时,它工作正常

任何解释。?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您要添加的对象必须来自相同的数据上下文,否则将计为隐式插入。我猜这个对象来自其他地方;也许是以前的数据上下文。如果您在查询之间缓存对象,这很棘手。也许只是设置id而不是......:p

你可能会根据需要分离和附加一些快乐,但这可能是不值得的。