Я делаю дипломный проект на платформе Acp. Net core mvc 5. Я создал роль поставщика. Я пытаюсь в методе publi c переопределить строку [] GetRolesForUser (string username), чтобы получить роли пользователя, вот сам метод
public override string[] GetRolesForUser(string username)
{
string[] roles = new string[] { };
using (ITSMContext db = new ITSMContext())
{
Specialist specialist = db.Specialists.FirstOrDefault(s => s.Login == username);
//int a = specialist.Id;
if (specialist != null)
{
var allRoles = db.ListSpecialistRoles.Where(r => r.SpecialistId == specialist.Id)
.FirstOrDefault();
ListSpecialistRole specialistRole = db.ListSpecialistRoles.Find(allRoles.SpecialistId);
Role role = db.Roles.FirstOrDefault(r => r.Id == specialistRole.RolesId);
if (specialistRole != null)
roles = new string[] { role.NameRole };
}
}
return roles;
}
При выполнении я получаю следующую ошибку
Invalid object name 'dbo.ListSpecialistRoles1'.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.Data.SqlClient.SqlException: Invalid object name 'dbo.ListSpecialistRoles1'.
Ошибка источника:
Строка 58: {
Строка 59:
Строка 60: var allRoles = db.ListSpecialistRoles.Where(r => r.SpecialistId == specialist.Id)
Строка 61: .FirstOrDefault();
Строка 62: ListSpecialistRole specialistRole = db.ListSpecialistRoles.Find(allRoles.SpecialistId);
Исходный файл: E:\Артём\VISUAL\ITSMForSchool\ITSMForSchool\Providers\CustomRoleProvider.cs Строка: 60
Трассировка стека:
[SqlException (0x80131904): Invalid object name 'dbo.ListSpecialistRoles1'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +2573710
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6014662
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +297
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4291
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +59
По какой-то причине программа пытается создать таблицу dbo.ListSpecialistRoles1. Таблицы ролей и специалистов связаны многими ко многим с помощью таблицы ListSpecialistRoles. В контексте данных я зарегистрировал эти отношения
public class ITSMContext : DbContext
{
public DbSet<Position> Positions { get; set; }
public DbSet<Specialist> Specialists { get; set; }
public DbSet<Request> Requests { get; set; }
public DbSet<RequestProcessing> RequestProcessings { get; set; }
public DbSet<Status> Statuses { get; set; }
public DbSet<RequestType> RequestTypes { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<Room> Rooms { get; set; }
public DbSet<TypeAsset> TypesAsset { get; set; }
public DbSet<Asset> Assets { get; set; }
public DbSet<ListSpecialistRole> ListSpecialistRoles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Role>().HasMany(c => c.Specialists)
.WithMany(s => s.Roles)
.Map(t => t.MapLeftKey("RolesId")
.MapRightKey("SpecialistId")
.ToTable("ListSpecialistRoles"));
modelBuilder.Entity<Specialist>().HasMany(c => c.Roles)
.WithMany(s => s.Specialists)
.Map(t => t.MapLeftKey("SpecialistId")
.MapRightKey("RolesId")
.ToTable("ListSpecialistRoles"));
Пожалуйста, помогите мне выяснить, в чем ошибка.