0

我有 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();
}
4

0 回答 0