Обновите Схему базы данных SQL Server с обновлением программного обеспечения

Циклы могут быть довольно интересными при использовании чистого JavaScript. Похоже, что только ECMA6 (спецификация JavaScript для нового 2015 года) получил контроль над циклами. К сожалению, поскольку я пишу это, оба браузера и популярная интегрированная среда разработки (IDE) по-прежнему изо всех сил пытаются полностью поддержать новые колокола и свистки.

На первый взгляд, вот как выглядит цикл JavaScript JavaScript раньше ECMA6:

for (var key in object) {
  if (p.hasOwnProperty(key)) {
    var value = object[key];
    console.log(key); // This is the key;
    console.log(value); // This is the value;
  }
}

Кроме того, я знаю, что этот вопрос выходит за рамки этого вопроса, но в 2011 году ECMAScript 5.1 добавил метод forEach только для массивов, который в основном создал новый улучшенный способ циклического преобразования массивов в то же время оставляя неизменяемые объекты со старым многословным и запутанным циклом for. Но нечетная часть заключается в том, что этот новый метод forEach не поддерживает break, что привело к возникновению всех других проблем.

В основном в 2011 году не существует реального твердого метода для цикла в JavaScript чем то, что многие популярные библиотеки (jQuery, Underscore и т. д.) решили повторно реализовать.

С 2015 года у нас теперь есть лучший способ использовать цикл (и разбивать) любой тип объекта ( включая массивы и строки). Вот как выглядит цикл в JavaScript, когда рекомендация станет основной:

for (let [key, value] of Object.entries(object)) {
    console.log(key); // This is the key;
    console.log(value); // This is the value;
}

Обратите внимание, что большинство браузеров не будут поддерживать код выше с 18 июня 2016 года. Даже в Chrome вам нужно включите этот специальный флаг для работы: chrome://flags/#enable-javascript-harmony

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

6
задан Cœur 30 April 2017 в 12:25
поделиться

6 ответов

Не уверенный в интеграции с установщиком Windows, но Вы могли бы изучить Поставщика программного блока SQL Красного Логического элемента

1
ответ дан 17 December 2019 в 00:17
поделиться

InstallShield позволяет Вам выполнить сценарии SQL как часть установки. Не попробованный это, хотя, просто помните, что это был на GUI прошлый раз, когда я смотрел!

0
ответ дан 17 December 2019 в 00:17
поделиться

Adam Cogan рекомендует составить таблицу патча, которая используется для записи каждого обновления вне первоначальной версии. Вместо того, чтобы изменить Вашу схему через SSMS или Руководителя предприятия удостоверяются Вы сценарий каждое изменение... оба приложения позволяют Вам писать сценарий своих изменений и затем не применять их. Сохраните сценарии в файлы (вероятно, добавляют их как ресурсы), и затем просто проверьте таблицу патчей каждый раз Вы выполнение приложения.

У Adam есть некоторые правила к лучшим базам данных SQL здесь

http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx

2
ответ дан 17 December 2019 в 00:17
поделиться

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

  • Отождествите каждое изменение схемы с уникальным идентификатором, таким как гуид
  • Включайте список всех изменений, которые можно применить с продуктом, например, скомпилированным в ресурс во время сборки
  • Имейте таблицу в базе данных для содержания списка изменений схемы, которые были применены
  • когда Вы соединяетесь со своей базой данных, сканируете ту таблицу, чтобы видеть, необходимы ли какие-либо изменения

Это все достаточно просто, чтобы сделать из Вашего под управлением кода, но не настолько легкое сделать в Вашем установщике.

4
ответ дан 17 December 2019 в 00:17
поделиться

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

0
ответ дан 17 December 2019 в 00:17
поделиться

Я думаю, что у Вас есть для каждой версии Вашего программного обеспечения набор обновлений базы данных. Почему Вы не пишете эти обновления, поскольку инструкция T-SQL, чтобы быть протестированным - выполнился, когда новая версия Вашего программного обеспечения сначала запускается? Просто откройте связь для своей базы данных из Вашего программного обеспечения и отправьте указания DDL, поскольку Вы отправили бы любой ВЫБОР или инструкцию по ОБНОВЛЕНИЮ. Я также сделал бы что-то подобное тому, что предлагает Jack Paulsen: ведите список этих инструкций T-SQL с двойной идентификационной системой: один связанный к версии базы данных/программного обеспечения, к которой это относится (может быть uniqueIdentifier), другой (число) для хранения инструкций в последовательном порядке (см. мой пример: инструкция 2 не может быть выполнена перед инструкцией 1)

Пример:

//instruction 1, batch instructions for version#2.162
USE myDatabase
GO
ALTER TABLE myTable
    ADD myColumn uniqueIdentifier Null
GO
//instruction 2, batch instructions for version#2.162
USE myDatabase
ALTER TABLE myTable
    ADD CONSTRAINT myTable_myColumn FOREIGN KEY (myColumn) ...
GO

Для полного описания ИЗМЕНИТЕ, ОТБРОСЬТЕ и СОЗДАЙТЕ инструкции, посмотрите свою справку T-SQL. Просто будьте достаточно осторожны, чтобы (например), удалить Индексы и Ограничения, связанные с полем прежде, чем удалить то поле.

Можно, конечно, добавить некоторые дополнительные инструкции по ОБНОВЛЕНИЮ вычислить значения для добавленных столбцов и т.д.

Можно даже думать о чем-то более сложном, проверяя, ступает ли предыдущее обновление (который привел к версии № 2.161 базы данных), правильно выполнялись.

Мой совет: поскольку Вы пишете эти инструкции T-SQL, сохраните также трассировку их "дубликатов", так, чтобы Вы могли в любое время (отладка времени, например) понижают Вашу структуру базы данных до предыдущей версии.

0
ответ дан 17 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

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