При циклическом просмотре записей в 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());
}
Выбор Update Model from Database является лучшим методом для обновления Вашего EDMX. Существуют определенные свойства, которые не становятся обновленными на уровне Conceptual.
Удостоверьтесь, что Ваш уровень Store был обновлен путем просмотра его на панели инструментов Model Viewer. Если Хранилище было правильно обновлено затем, Вы хорошо, и Ваша база данных находится в синхронизации. Если так, войдите в визуального разработчика, нажмите поле, перейдите к свойствам и обновите свойство NotNull на Концептуальной стороне.
Обновление / удаление из EDMX не всегда возможно. Если модель не обновляется при нажатии кнопки «Обновить модель из базы данных», скажем, когда вы обновили представление / таблицу в базе данных, выполните следующие действия:
1) Удалите представление / таблицу из диаграммы модели
2) Переключите EDMX в представление xml (щелкните правой кнопкой мыши файл edmx и выберите «Открыть с помощью»)
3) Найдите и удалите элементы сущности xml
4) Вернитесь в режим просмотра EDMX
5) Щелкните «Обновить модель из базы данных»
. Это должно отразить все изменения, внесенные вами в базу данных EDMX. Это громоздко, но работает безупречно.
В идеальном мире я ожидал бы, что модель обновления из базы данных синхронизирует изменения из базы данных в EDMX. Но в большинстве случаев это не работает.
Да, в большинстве случаев это не работает: - /
«Лучший метод» (потому что он работает систематически) - удалить файл EDMX и сгенерировать его снова. Но не забудьте удалить строку подключения в App.config (иначе VS2008 wizzard добавит суффикс к имени объекта по умолчанию) и очистите кеш.
Я надеюсь, что эти инструменты будут работать лучше в следующем выпуске, потому что это резко снижает производительность ...
Откройте файл 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>-->
В приведенном выше случае ... Добавление первичного ключа к рассматриваемой таблице, вызвало работу «Модель обновления из базы данных».