Создание глобальной переменной для веб -приложения - ASP.NET
-
13-10-2019 - |
Вопрос
Я строю свое веб -приложение, чтобы связаться с DB. До сих пор мне удалось справиться с этим (хотя я не строил BLL & DAL).
У меня есть таблица, в которой есть столбец "ID". Я знаю, что есть способ объявить его на SQL Server автоматически. (Но я не хочу этого).
Я хочу объявить переменную глобальной приложения, которая будет удерживать значение.
У меня есть 2 вопроса:
Как я это объявляю?
где я его создаю и инициалирую? (У меня есть несколько страниц входа).
БЛАГОДАРНОСТЬ!
пса
Было бы полезно, если бы кто -то скажет мне, как мне построить DAL с моими сохраненными процедурами? А для того, что мне нужно, использовать BLL, что я не могу сделать в DAL?
Решение
Вы можете использовать Application
объект - это часть HttpContext
и доступен непосредственно на любой странице.
Если вы не хотите его использовать, вы можете написать Globals
Класс (или любое имя, которое вам нравится), в котором содержится статические участники.
public class Globals
{
public static int Counter { get; set;}
}
// accessed from other classes:
Globals.Counter++;
Любой подход не будет работать с вами, есть веб -ферма или несколько веб -приложений, и они не выживут.
Независимо от этих вариантов, правильное решение (даже если вы не хотите его использовать - вы можете объяснить, почему?), - использовать поле ID с IDENTITY
пункт.
Другие советы
Хранение переменной - это легкая часть. Управление собственным поколением идентификационных идентификаторов и вопросами спора и параллелистики является сложной частью. Удачи.
В ASP.NET действительно нет такой вещи, как глобальная переменная. Помните, http не содержит сохранения состояния.
Самое близкое, что вы можете прийти, - это хранить что -то в объекте приложения:
Application["myvar" ] = x;
x = Application["myvar"];
Но даже здесь эта переменная теряется, когда приложение необходимо перезапустить, что она может время от времени делать.
Гораздо лучшее решение для того, что вы описываете, - это значение базы данных.
Увеличение целого числа, а затем бросить этот увеличенный идентификатор в БД, чреват опасностью. Многопоточный? Что происходит, когда приложение подпрыгивает? Развертывания Dev и Prod имеют один и тот же набор чисел?
Похоже, вам нужен глобально уникальный идентификатор и может быть создан вне базы данных. Это звучит как работа для Guid. Конечно, это занимает больше места в БД, но, вероятно, это не самое худшее, что вы собираетесь сделать с базой данных.