Действительно ли возможно изменить web.config, не заканчивая все сеансы пользователя?

Самая простая опция составила бы таблицу со строкой на элемент списка, столбец для положения объекта и столбцы для других данных в объекте. Тогда можно использовать ORDER BY на столбце положения для получения в желаемом порядке.

create table linked_list
(   list_id   integer not null
,   position  integer not null 
,   data      varchar(100) not null
);
alter table linked_list add primary key ( list_id, position );

Для управления списком просто обновляют положение и затем вставляют/удаляют записи по мере необходимости. Таким образом вставить объект в список 1 в индексе 3:

begin transaction;

update linked_list set position = position + 1 where position >= 3 and list_id = 1;

insert into linked_list (list_id, position, data)
values (1, 3, "some data");

commit;

, Так как операции в списке могут потребовать нескольких команд (например, вставка потребует ВСТАВКИ и ОБНОВЛЕНИЯ), удостоверьтесь, чтобы Вы всегда выполнили команды в транзакции.

изменение А этой простой опции должно иметь постепенное увеличение положения некоторым фактором для каждого объекта, сказать 100, так, чтобы при выполнении ВСТАВКИ необходимо было не всегда перенумеровывать положение следующих элементов. Однако это требует немного большего усилия разработать, когда увеличить следующие элементы, таким образом, Вы теряете простоту, но получаете производительность, если у Вас будет много вставок.

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

  • , Если Вы хотите выполнить много манипуляций в списке и не многих извлечений, можно предпочесть иметь столбец ID, указывающий на следующий объект в списке, вместо того, чтобы использовать столбец положения. Тогда Вам нужно к повторяющейся логике в извлечении списка для приведения объектов в порядок. Это может быть относительно легко реализовано в сохраненном proc.

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

10
задан Espo 22 September 2009 в 10:12
поделиться

2 ответа

Вы можете переместить изменчивые части файла web.config во внешние файлы, а затем настроить IIS так, чтобы приложения не перезапускались при изменении этих файлов.

В приведенном ниже примере приложение и соединение- строковые настройки были перемещены в другой файл за пределами web.config.

<?xml version="1.0"?>
<configuration>

  <appSettings configSource="appSettings.config"/>

  <connectionStrings configSource="connections.config"/>   

</configuration>

Как только это будет сделано, вы можете внести изменения в настройки приложения (или что-то еще, что вы поместили во внешний файл) без редактирования web.config.

Вы также можете посетить machine.config и поиграть с атрибутом restartOnExternalChanges, но это следует использовать с осторожностью, так как это может иметь непредвиденные последствия. В некоторых разделах, таких как настройки приложения, уже установлено значение «false».

<section name="appSettings" restartOnExternalChanges="false">

Более подробная информация доступна в этой статье OdeToCode .

8
ответ дан 4 December 2019 в 01:02
поделиться

Если вы не используете состояние сеанса InProc, ваши сеансы должны сохраняться при перезапуске приложения.

Элемент sessionState (включая примечания по настройке режима SqlServer.

3
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

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