Создание глобальной переменной для веб-приложения - ASP.NET - PullRequest
1 голос
/ 28 декабря 2010

Я создаю свое веб-приложение для связи с БД.до сих пор мне удалось справиться с этим (хотя я не создавал BLL & DAL).

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

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

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

  1. как мне это объявить?

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

СПАСИБО!

ps

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

Ответы [ 4 ]

5 голосов
/ 28 декабря 2010

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

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

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

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

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


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

1 голос
/ 28 декабря 2010

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

Самое близкое, что вы можете получить, это сохранить что-то в объекте Application:

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

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

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

1 голос
/ 28 декабря 2010

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

0 голосов
/ 28 декабря 2010

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

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

...