Linq-to-SQL проблема вставки нескольких одинаковых объектов - PullRequest
1 голос
/ 24 июня 2010

Вот моя ассоциация объекта:

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

Итак, у меня есть объект Summary, содержащий коллекцию заданий, в которой есть объект Operator (часы #, имя и т. Д.)

При создании новой сводки я прохожу и создаю новые существующие рабочие места и добавляю все свойства.Затем выполните одну вставку для созданного объекта Summary.Затем это вставляет новые задания и операторы, если это необходимо, в противном случае я могу прочитать существующие задания и операторы из базы данных.

Проблема возникает, когда у меня один и тот же оператор, выполняющий оба задания, и этот оператор не существует вбаза данных.Linq-To-SQL пытается вставить один и тот же объект дважды и терпит неудачу, так как я использую часы # в качестве первичного ключа.

Я могу создать автоматический номер для первичного ключа, но тогда я будуесть дубликаты данных, и я бы предпочел не делать этого.У кого-нибудь есть идеи обойти это?

Спасибо!

1 Ответ

1 голос
/ 24 июня 2010

Я думаю, что проблема заключается в том, как вы пишете создание вашего объекта.Я не видел ваш код, но я думаю, что вы делаете что-то вроде этого:

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

Если это ваш случай, попробуйте заранее создать экземпляр оператора "foo", а затем назначить его для обоих заданий.

Если вы уже делаете это и по-прежнему получаете сообщение об ошибке, то прежде чем создать оператора, сохранить его в базе данных, затем извлечь его и назначить для требуемых заданий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...