1

Я создаю свое веб-приложение для связи с db. до сих пор мне удалось справиться с этим, (хотя я не строил BLL & DAL).Создание глобальной переменной для веб-приложения - ASP.NET

У меня есть стол, в котором есть столбец «id». Я знаю, что есть способ объявить его в SQL Server автоматически увеличивать. (но я не хочу этого).

Я хочу объявить глобальную переменную приложения, которая будет удерживать значение.

У меня есть 2 вопроса:

  1. как я объявляю его?

  2. где я его создаю и инициализирую? (у меня несколько страниц входа).

СПАСИБО!

p.s

было бы полезно, если бы кто-то скажет мне, как я построить DAL с моими хранимыми процедурами? и для чего мне нужно использовать BLL, который я не могу сделать в DAL?

+2

Какая у вас причина не использовать столбец db IDENTITY? – InSane

+1

Что касается вашего PS - я предлагаю задать новый вопрос. – Oded

ответ

5

Вы можете использовать объект Application - он является частью HttpContext и доступен непосредственно на любой странице.

Если вы не хотите его использовать, вы можете написать класс Globals (или любое другое имя), которое содержит статические элементы.

public class Globals 
{ 
    public static int Counter { get; set;} 
} 

// accessed from other classes: 
Globals.Counter++; 

Любой подход не будет работать из вас есть веб-фермы или несколько веб-приложений, а не выживут перезагружается.


Независимо от этих вариантов, правильное решение (даже если вы не хотите использовать его? - Вы можете объяснить, почему), чтобы использовать поле идентификатора с пунктом IDENTITY.

+0

Теперь я начинаю тесты в приложении, а личность продолжает заклеиваться? – RonenIL

+0

@ RonenIL - Разве это не то, что вы хотели? – Oded

1

Хранение переменной - легкая деталь. Трудная роль заключается в управлении собственной генерации идентификаторов, а также проблемах конкуренции и параллелизма. Удачи.

1

В ASP.NET действительно нет такой вещи, как глобальная переменная. Помните, что HTTP не имеет гражданства.

Ближайший вы можете прийти хранит что-то в объекте Application:

Application["myvar" ] = x; 
x = Application["myvar"]; 

Но даже здесь, эта переменная теряется, когда приложение должно перезапустить, что он может делать время от времени.

Лучшим решением для того, что вы описываете, является значение базы данных.

0

Приращение целого числа, а затем выброс этого увеличенного ID в db чревато опасностью. Многопоточность? Что происходит, когда приложение отскакивает? Разве dev и prod развертывания имеют один и тот же набор чисел?

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

+0

GUID также очень плохо индексируются в базах данных. Есть хаки, доступные для создания псевдо-GUID, которые могут индексировать немного легче, но они немного больны. GUID как ПК является довольно распространенным хитом производительности в базе данных. – David

 Смежные вопросы

  • Нет связанных вопросов^_^