LINQ: Вставить новый набор данных в отношение «многие ко многим» с существующими объектами - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть две сущности, которые называются английский и немецкий.У обоих из них есть поля ID, Vocable.

Чтобы связать переводы друг с другом, я создал таблицу GermanEnglish, в которой хранятся идентификаторы как первых сущностей, так и единицы, в которой голосовой вызов произошел первым.

Вставка одного голосового вызова с несколькими переводами одновременно (перед отправкой изменений в объект GermanEnglish) работает нормально.Когда я хочу добавить перевод к существующему доступному голосу, я получаю сообщение об ошибке, что это значение уже находится в базе данных (я определил поле Vocable как UNIQUE).

Я попробовал следующее:

using (VokabeltrainerDBDataContext context = new VokabeltrainerDBDataContext())
var german = from voc in context.German
           where voc.GermanWord.Equals(txtVocable.Text)
           select voc;

// if the german word exists in the database...
if (german.Any())
{
   foreach ( English englishWord in englishTranslations)
   {
      var germanEnglish = new GermanEnglish();
         germanEnglish.English = englishWord;
         germanEnglish.Unit = unit;
         germanEnglish.German.Add(german); // add-method not available!
      context.GermanEnglish.InsertOnSubmit(germanEnglish);
   }
} else {...}
context.SubmitChanges();

... но метод Add недоступен.Во всех вопросах и учебных пособиях я вижу только людей, использующих метод add.

Есть ли в моем коде ошибка?Или этот метод больше не доступен?(например, метод Add, который был переименован в InsertOnSubmit)

1 Ответ

1 голос
/ 06 ноября 2011

Насколько я понимаю, ваш пример EnglishGerman - это таблица, в которой есть EnglishGermanID, Unit, EnglishID, GermanID?

Так что вы не можете добавить Список немецких.Вы можете назначить только germanEnglish.German = german (в этом случае должен быть только один объект) ... Я так думаю, но я немного новичок в linq

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