Linq-To-SQL问题插入多个相同的对象

时间:2010-06-24 12:20:01

标签: linq-to-sql insert

这是我的对象关联:

Summary
-> Job
  -> Operator
-> Job
  -> Operator

所以,我有一个Summary对象,其中包含一个Jobs集合,它有一个Operator对象(时钟号,名称等)

创建新摘要时,我会查看并创建存在的新作业并添加所有属性。然后,在构建的Summary对象上执行单个插入操作。然后,如果需要,这将插入新的作业和操作符,否则我可以从数据库中读取现有的作业和操作符。

当我有相同的运算符运行两个作业并且数据库中不存在运算符时,问题就出现了。 Linq-To-SQL试图将同一个对象插入两次并失败,因为我使用时钟#作为主键。

我可以为主键创建一个自动编号,但是我会有重复数据,我宁愿不这样做。有没有人有任何想法来解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题在于你如何编写对象创建。我没有看到你的代码,但我认为你正在做这样的事情:

Summary summary = new Summary
                                  {
                                      Jobs = new List<Job>
                                                 {
                                                     new Job
                                                         {
                                                             Operator = new Operator {Name = "foo"}
                                                         },
                                                     new Job
                                                         {
                                                             Operator = new Operator {Name = "foo"}
                                                         }
                                                 }
                                  };

如果是这种情况,请尝试事先将操作符“foo”实例化,然后将其分配给两个作业。

如果您已经这样做并仍然收到错误,那么您应该先创建运算符并将其保存到数据库,然后检索它并将其分配给所需的作业。