Я пытаюсь создать новую запись в моей базе данных с помощью EF Core, например:
RefreshToken newDBRefreshToken = new RefreshToken()
{
Id = 0,
Token = refreshToken,
AccessToken = accessToken,
UserId = userId
};
_dbContext.RefreshToken.Add(newDBRefreshToken);
Я получаю это сообщение об ошибке при сохранении:
Установлен внешний ключ '{UserId: 5b82dbb0-c38b-4144-b51d-e092ef6f5e55}'
в RefreshToken со значением ключа {Id: -2147482647} соответствует
сущность типа 'IdentityUser', однако основной тип сущности
должен быть назначен на «ApplicationUser».
У меня есть две сущности:
//To make it possible to use AspNetUsers as a reference table
public class ApplicationUser : IdentityUser
{
}
public class RefreshToken : BaseEntity //Has int Id and CreateDate ect...
{
//Reference the IdentityUser
public string UserId { get; set; }
public ApplicationUser User { get; set; }
public string Token { get; set; }
public string AccessToken { get; set; }
public DateTime ValidUntil { get; set; }
}
миграция создала мою таблицу RefreshToken следующим образом:
Edit:
Это мой раздел Startup.cs:
services.AddDbContext<ApiContext>(options =>
options.UseSqlServer(connection, builder => builder.MigrationsAssembly(typeof(Startup).Assembly.FullName)
).EnableSensitiveDataLogging(true));
// ===== Add Identity ========
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApiContext>()
.AddErrorDescriber<IdentityErrorDescriberDE>()
.AddDefaultTokenProviders();
Я пытался использовать ApplicationUser
в качестве TUser, что выдает мне эту ошибку:
InvalidOperationException: невозможно разрешить службу для типа
'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]
при попытке активировать Web.Controllers.AccountController.
Это мой контекст:
public class ApiContext : IdentityDbContext {
...
}