这是我的对象关联:
Summary
-> Job
-> Operator
-> Job
-> Operator
所以,我有一个Summary对象,其中包含一个Jobs集合,它有一个Operator对象(时钟号,名称等)
创建新摘要时,我会查看并创建存在的新作业并添加所有属性。然后,在构建的Summary对象上执行单个插入操作。然后,如果需要,这将插入新的作业和操作符,否则我可以从数据库中读取现有的作业和操作符。
当我有相同的运算符运行两个作业并且数据库中不存在运算符时,问题就出现了。 Linq-To-SQL试图将同一个对象插入两次并失败,因为我使用时钟#作为主键。
我可以为主键创建一个自动编号,但是我会有重复数据,我宁愿不这样做。有没有人有任何想法来解决这个问题?
谢谢!
答案 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”实例化,然后将其分配给两个作业。
如果您已经这样做并仍然收到错误,那么您应该先创建运算符并将其保存到数据库,然后检索它并将其分配给所需的作业。