我有 ac# 应用程序正在使用 LinqToSQL 进行数据库工作。
我的 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 建立关系。所以一个缺陷实体对许多日志实体。
VS 2012中的关联编辑器是这样的
父类 = 缺陷 | 子类 = 日志
关联属性
缺陷属性 = Id | 日志属性 = 缺陷 ID
好的,这就是设置。我的问题是,如果我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();
}