Обновление edmx для отражения изменений, внесенных в дб (.NET linq к объектам)

При циклическом просмотре записей в map1 вы копируете каждый узел. Следовательно, сортировка выполняется на независимом, недавно созданном экземпляре std::vector<int>, и изменения в этой переменной, локальной для цикла (например, сортировка ее), уже потеряны на следующей итерации.

Вам нужно изменить центральный диапазон для цикла на

for(auto& i : map1) {
   //   ^ Loop over references to map nodes, not copies!
   std::sort(i.second.begin(), i.second.end());
}

Так же, как примечание, когда вы можете использовать C ++ 17, вы можете использовать структурированные привязки, чтобы сделать цикл более выразительный по

for(auto& [key, vec] : map1) {
   std::sort(vec.begin(), vec.end());
}
44
задан bendewey 27 March 2009 в 15:52
поделиться

4 ответа

Выбор Update Model from Database является лучшим методом для обновления Вашего EDMX. Существуют определенные свойства, которые не становятся обновленными на уровне Conceptual.

Удостоверьтесь, что Ваш уровень Store был обновлен путем просмотра его на панели инструментов Model Viewer. Если Хранилище было правильно обновлено затем, Вы хорошо, и Ваша база данных находится в синхронизации. Если так, войдите в визуального разработчика, нажмите поле, перейдите к свойствам и обновите свойство NotNull на Концептуальной стороне.

14
ответ дан bendewey 26 November 2019 в 21:42
поделиться

Обновление / удаление из EDMX не всегда возможно. Если модель не обновляется при нажатии кнопки «Обновить модель из базы данных», скажем, когда вы обновили представление / таблицу в базе данных, выполните следующие действия:

1) Удалите представление / таблицу из диаграммы модели
2) Переключите EDMX в представление xml (щелкните правой кнопкой мыши файл edmx и выберите «Открыть с помощью»)
3) Найдите и удалите элементы сущности xml
4) Вернитесь в режим просмотра EDMX
5) Щелкните «Обновить модель из базы данных»

. Это должно отразить все изменения, внесенные вами в базу данных EDMX. Это громоздко, но работает безупречно.

В идеальном мире я ожидал бы, что модель обновления из базы данных синхронизирует изменения из базы данных в EDMX. Но в большинстве случаев это не работает.

81
ответ дан 26 November 2019 в 21:42
поделиться

Да, в большинстве случаев это не работает: - /

«Лучший метод» (потому что он работает систематически) - удалить файл EDMX и сгенерировать его снова. Но не забудьте удалить строку подключения в App.config (иначе VS2008 wizzard добавит суффикс к имени объекта по умолчанию) и очистите кеш.

Я надеюсь, что эти инструменты будут работать лучше в следующем выпуске, потому что это резко снижает производительность ...

5
ответ дан 26 November 2019 в 21:42
поделиться

Откройте файл EDMX в редакторе XML VS и проверьте, были ли ошибки были предприняты при попытке обновления.

  <!--Errors Found During Generation:
      warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key   
      defined and no valid primary key could be inferred. This table/view has  
      been excluded. To use the entity you will need to review your schema,  
      add the correct keys and uncomment it.

  <EntityType Name="snafu">
    <Property Name="snafu_column" Type="smallint" />
  </EntityType>-->

В приведенном выше случае ... Добавление первичного ключа к рассматриваемой таблице, вызвало работу «Модель обновления из базы данных».

2
ответ дан 26 November 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: