我有一个使用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();
}