#c# #asp.net #asp.net-mvc #asp.net-mvc-5 #asp.net-identity
#c# #asp.net #asp.net-mvc #asp.net-mvc-5 #asp.net-identity
Вопрос:
Я реализую ASP.NET Идентификатор MVC (.NET Framework), а также страница регистрации и страница аутентификации входа в систему, как и ожидалось, были сгенерированы автоматически.
Я хотел бы иметь отдельную страницу для списка ЗАРЕГИСТРИРОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ, и это то, что я сделал.
- Добавьте контроллер — MVC5 с помощью Vies, используя Entity Framework, для автоматической генерации функциональности CRUD.
После выполнения я получил эту ошибку> В модели представления не определен ключ
Итак, я попытался добавить свойство Id в модель следующим образом
public class RegisterViewModel
{
[Key]
public string Id { get; set; }
....
}
Но все равно получаю ту же ошибку.
Пожалуйста, сообщите
Комментарии:
1. Это неправильный генератор кода, потому что модели представлений не хранятся в базе данных и не должны храниться.
2. Я согласен с @AluanHaddad в том, что ваша «модель» не должна называться «view model», пожалуйста, проверьте, как работает MVVM. однако вы, безусловно, можете называть свою модель как угодно, включая ‘viewmodel’, и генератор все равно должен работать
Ответ №1:
Первичный ключ должен однозначно идентифицировать строку. Редко используется строка в качестве первичного ключа.
Если это действительно имеет смысл, и строка является единственным уникальным идентификатором для вашей таблицы, то вы должны сообщить Entity Framework, что ваш ключ не является столбцом идентификатора, поскольку он по умолчанию пытается применить это свойство к столбцу [Key] .
подробнее об ИДЕНТИФИКАЦИИ в T-SQL
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-ver15
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string FooId { get; set; }
Все, что было сказано, вам, вероятно, следует использовать integer
или Guid
Ответ №2:
вам нужно изменить идентификатор вашего свойства со строки на целое число
Комментарии:
1. Это правильно, но не совсем правильно. У вас может быть первичный ключ в виде строки.