Краткий ответ: Измените ваш код, как показано ниже
public class ApplicationRole : IdentityRole<string>
{
public ApplicationRole() : base()
{
}
public ApplicationRole(string roleName) : base(roleName)
{
}
}
Длинная версия:
«ApplicationRole» не содержитконструктор, который принимает аргументы 1. [DbInitialize] `
Первая ошибка возникает из-за того, что вы пытаетесь создать новую роль с помощью
new ApplicationRole("Quality Manager")
Однако нет конструктора, которыйпринимает одну строку в качестве параметра:
public class ApplicationRole : IdentityRole
{
}
Поэтому он жалуется, что
не содержит конструктор, который принимает аргументы 1. [DbInitialize]
Примечание когда нет явного конструктора, C # создаст его по умолчанию для вас .
Однако, если вы добавите конструктор, как показано ниже:
public class ApplicationRole : IdentityRole
{
public ApplicationRole(string roleName) : base(roleName)
{
}
}
Будет только один конструктор, который принимает string
как roleName
. Обратите внимание, что это означает, что не существует конструктора, который не принимает аргументов . Как этот конструктор (которыйне принимает аргументов) используется внутренне Identity
, жалуется, что No suitable constructor found for entity type 'ApplicationRole'
.
В результате, если вы хотите создать ApplicationRole
с помощью:
new ApplicationRole("Quality Manager")
, вам нужно создать как ApplicationRole()
, так и ApplicationRole(string roleName)
конструкторы.