Linq To SQL检索作为新实体插入的实体

时间:2013-08-14 15:09:08

标签: c# sql linq-to-sql

我有一个使用LinqToSQL进行数据库工作的c#应用程序。

我的sql数据库中有2个像这样设置的表

  

表1 - 名称=日志

     
    

列 - Id(Int NOT NULL IDENTITY),DefectId(Int NOT NULL),Stage(Int NOT NULL)

  
     

表2 - 名称=缺陷

     
    

列:Id(Int NOT NULL IDENTITY),名称(NVarChar(50)NOT NULL)

  

表2通过OneToMany关系与表1有关系。因此,许多LOG实体都有一个缺陷实体。

VS 2012中的关联编辑就是这样

  

父类=缺陷|子类=日志

     

关联属性

     

缺陷属性= Id | Log Properties = DefectId

好的,这就是设置。我的问题是,如果我像这样创建一个新的LOG实体

Log L = new Log();

然后检索DEFECT实体并将其分配给L的DEFECT属性,就像这样。

var d = (from def in DatabaseContext.DEFECT
         where def.Id == 1
         select def).Single();

L.DEFECT = d;

现在,如果我将L插入数据库,它还会将L.DEFECT作为新实体插入,这意味着我会获得重复项。

某处我设置错误或财产设置错误,所以我问是否有人知道我做错了什么或我可以检查的事情。

我使用MS SQL MANAGMENT STUDIO来查看和修改数据库。 我在vs 2012中使用了MSLinqToSQLGenerator来生成项目中的映射等。

虽然我在其他项目中使用sql和LinqToSQL几次,但我仍然是新手,所以我的术语可能是错的,我为此道歉。

更新:插入代码

using (dbTechLogDataContext db = new dbTechLogDataContext())
{
    db.Logs.InsertOnSubmit(L);
    db.SubmitChanges();
}

0 个答案:

没有答案