Это моя функция входа в систему:
LoginViewModel lvm = new LoginViewModel
{
UserName = Input.UserName,
Password = Input.Password,
RememberMe = Input.RememberMe
};
var valid = accountsData.Authenticate(lvm);
if (valid != null)
{
var avm = applicationUsersData.GetByUsername(Input.UserName);
var user = applicationUsersData.Get(avm.Id);
var roles = userRolesData.GetUserRoles(user.Id);
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.UserName, user.UserName));
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.Email, user.Email));
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.PhoneNumber, user.PhoneNumber));
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.FirstName, user.FirstName));
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.LastName, user.LastName));
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.Id, user.Id));
foreach (var item in roles)
{
var currentItem = new UserRoleDetailsViewModel
{
Id = item.Id,
Name = item.Name,
ApplicationId = item.ApplicationId,
ApplicationName = item.ApplicationName
};
var convertedItem = JsonConvert.SerializeObject(currentItem);
claims.Add(new Claim(ManagementStudio.ClassLibrary.Globals.CookieGlobals.Roles, convertedItem));
}
await _customClaimsCookieSignInHelper.SignInUserAsync(user, Input.RememberMe, claims);
activityLogger.Log(HttpContext, user.Id, configuration[DSCASGlobals.DS_Name], configuration[DSCASGlobals.DS_Id], Input.UserName + " logged in");
return LocalRedirect(returnUrl);
}
accountsData.Authenticate находится в ссылочной сборке dll под названием ManagementStudio.Data и выглядит следующим образом:
[AllowAnonymous]
public ApplicationUsers Authenticate(LoginViewModel Input)
{
PasswordHasher<ApplicationUsers> passwordHasher = new PasswordHasher<ApplicationUsers>();
ApplicationUsers user = new ApplicationUsers();
try
{
user = dbContext.ApplicationUsers.SingleOrDefault(u => u.Email == Input.UserName);
if(user != null)
{
if (passwordHasher.VerifyHashedPassword(user,user.PasswordHash,Input.Password) == PasswordVerificationResult.Success)
{
return user;
}
else
{
return null;
}
}
}
catch(Exception e)
{
logger.LogError(e, LoggingGlobals.Error);
return null;
}
return user;
}
Когда я запускаюприложение и логин, я получаю эту ошибку:
Возникла исключительная ситуация при переборе результатов запроса для типа контекста 'ManagementStudio.Data.Models.ManagementStudioDbContext'.System.Data.SqlClient.SqlException (0x80131904): недопустимое имя объекта «ApplicationUsers».в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection, действие 1 wrapCloseInAction) at
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection, Action
1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject..TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean и dataReady) в System.Data.SqlClient.SqlDataReader.TryConsumeMetaData () в System.Data.SqlClient.SqlDataReader.get_MetaData () в системе.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader DS, runBehavior runBehavior, String resetOptionsString) на System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, runBehavior runBehavior, булева returnStream, булева асинхронные, Int32 тайм-аут, задачи и задачи, булева asyncWrite, SqlDataReaderds) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логическое значение returnStream, TaskCompletionSource 1 completion, Int32 timeout, Task& task, Boolean
asyncWrite, String method) at
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
behavior) at
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
behavior) at System.Data.Common.DbCommand.ExecuteReader() at
Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection
connection, DbCommandMethod executeMethod, IReadOnlyDictionary
2 parameterValues) в Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader (соединение IRelationalConnection, IReadOnDefender_Exject_NeBell).EntityFrameworkCore.SqlServer..Internal.Linq.Enumerable.First [TSource] (IEnumerable 1
source) at
Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass15_1
1.b__0 (QueryContext qc) ClientConnectionId: 7c19efa6-d951-4139-8135-8dbcd5050c20 Номер ошибки: 208, состояние: 1, Class: 16
ApplicationUsers - это мой IdentityUser, который находится в ManagementStudio.Data.Models.DocumentStudio ссылается на него.
public class ApplicationUsers : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DateOfBirth { get; set; }
private DateTime createdOn = DateTime.Now;
public DateTime CreatedOn
{
get
{
return (createdOn == DateTime.MinValue) ? DateTime.Now : createdOn;
}
set
{
createdOn = value;
}
}
private DateTime updatedOn = DateTime.Now;
public DateTime UpdatedOn
{
get
{
return (updatedOn == DateTime.MinValue) ? DateTime.Now : updatedOn;
}
set
{
updatedOn = value;
}
}
}
Как решить эту проблему?
РЕДАКТИРОВАТЬ:
Мой полный DBSet
public DbSet<ApplicationUsers> ApplicationUsers { get; set; }
public DbSet<UserRoles> UserRoles { get; set; }
public DbSet<IdentityUserRole<string>> IdentityUserRole { get; set; }
public DbSet<IdentityUserClaim<string>> IdentityUserClaim { get; set; }
public DbSet<Applications> Applications { get; set; }
public DbSet<Roles> Roles { get; set; }
public DbSet<ApiAccess> ApiAccess { get; set; }
public DbSet<EventLogs> EventLogs { get; set; }
public DbSet<ActivityLogs> ActivityLogs { get; set; }
public DbSet<CommunicationLogs> CommunicationLogs { get; set; }
public DbSet<UploadLogs> UploadLogs { get; set; }
public DbSet<Repositories> Repositories { get; set; }
public DbSet<Emails> Emails { get; set; }
public DbSet<Assets> Assets { get; set; }
public DbSet<Announcements> Announcements { get; set; }
public DbSet<AnnouncementAttachments> AnnouncementAttachments { get; set; }
Список моделей: