#c# #asp.net-mvc #asp.net-mvc-4
#c# #asp.net-mvc #asp.net-mvc-4
Вопрос:
я работаю над веб-приложением C # MVC 4
я создал страницу, связанную с базой данных, и мой вопрос заключается в том, что в Create New record пользователь может ввести идентификатор, имя, …
как я могу скрыть в представлении пользователя идентификатор и заставить его автоматически увеличивать число, например, когда пользователь переходит на страницу создания нового, ему нужно будет начать заполнять имя, адрес… не видя поля идентификатора, которое должно автоматически принимать значение числа:
вот мой код модели:
public partial class Employee
{
public int Identifier { get; private set; }
public string Name { get; set; }
public string Address { get; set; }
public string Status { get; set; }
}
Ответ №1:
Вы должны позволить БД обрабатывать увеличение идентификатора. Я бы установил для идентификатора значение private на случай, если оно вам понадобится для бизнес-операций. Но вы можете удалить его из представления.
Ответ №2:
Отредактируйте представление и удалите из него часть идентификатора, тогда это зависит от того, как вы спроектировали БД, если у вас есть автоматическое увеличение, в противном случае вы должны управлять им в контроллере. Маттео
Ответ №3:
Используйте поле базы данных с автоматическим увеличением. Вот несколько распространенных способов сделать это
Если после вашего оператора INSERT INTO вы хотите получить идентификатор, сгенерированный вашей базой данных, поместите
SELECT SCOPE_IDENTITY();
чтобы SQL Server вернул сгенерированный им идентификатор.
Комментарии:
1. …. 0r используйте ORM-подобную Entity Framework, которая автоматически вернет только что вставленный
ID
в ваш объект после его сохранения….
Ответ №4:
Обычно вы используете a Guid
для представления идентификатора. Причина этого в том, что вы не можете знать последний идентификатор последнего вставленного объекта (в вашем случае Employee). Чтобы найти его, вы вставляете его в базу данных (пусть БД обрабатывает приращение), и сервер базы данных отвечает увеличенным идентификатором.
Чтобы узнать точный идентификатор вставленного объекта, используйте a Guid
. Это Guid
очень большое целое число, которое имеет очень малую вероятность быть идентичным другому вставленному идентификатору Guid. Таким образом, вам не придется ждать, пока база данных ответит введенным идентификатором.
Обратите внимание, что вы не можете привязать Guid к int. Вы должны изменить тип поля.
Комментарии:
1. Guid не является целым числом, и в качестве примечания для OP значение столбца по умолчанию может быть установлено на NewID()
2.@Silvermind Это из MSDN
A GUID is a 128-bit integer (16 bytes) that can be used across all computers and networks wherever a unique identifier is required. Such an identifier has a very low probability of being duplicated.
msdn.microsoft.com/en-us/library/system.guid.aspx Кроме того, я предлагал лучший подход.3. Я никогда не замечал этого замечания в msdn, но это довольно сбивает с толку. Я бы не сказал, что msdn здесь ошибается, но было бы более понятно, если бы он сказал, что он представляет 128-битное целое число.