Я хотел бы заблокировать пользователя из базы данных aspnetusers в SQL с помощью MVC. Это мой админ контроллер:Заблокировать пользователя в SQL с помощью MVC
[HttpPost]
public ActionResult LockUser(string Id)
{
var datastore = new UserStore<ApplicationUser>();
var manager = new UserManager<ApplicationUser, string>(datastore);
//update current user object in memory
//var user = User.Identity.GetApplicationUser();
var user = manager.FindById(Id);
user.LockoutEnabled = true;
user.LockoutEndDateUtc = DateTime.UtcNow.AddYears(2);
manager.UpdateAsync(user);
var dbcontext = datastore.Context;
//update user object in database
dbcontext.SaveChanges();
return RedirectToAction("Index");
}
Это мое мнение администратора:
@using (Html.BeginForm("LockUser", "Admin", new { id = x.Id }))
{
<input type="submit" class="button" value="Lock" />
}
При нажатии на кнопку ничего не происходит в моей базе данных, и я до сих пор могу войти с учетной записью. я получаю эту ошибку:
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=The entity type ApplicationUser is not part of the model for the current context.
Source=EntityFramework
StackTrace:
at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType)
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Internal.Linq.InternalSet`1.FindAsync(CancellationToken cancellationToken, Object[] keyValues)
at System.Data.Entity.DbSet`1.FindAsync(CancellationToken cancellationToken, Object[] keyValues)
at System.Data.Entity.DbSet`1.FindAsync(Object[] keyValues)
at Microsoft.AspNet.Identity.EntityFramework.EntityStore`1.GetByIdAsync(Object id)
at Microsoft.AspNet.Identity.EntityFramework.UserStore`6.<GetUserAggregateAsync>d__6c.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNet.Identity.AsyncHelper.RunSync[TResult](Func`1 func)
at Microsoft.AspNet.Identity.UserManagerExtensions.FindById[TUser,TKey](UserManager`2 manager, TKey userId)
at BlogMaxim.Controllers.AdminController.LockUser(String Id) in C:\nmct\2e Jaar\1e sem\project\BlogMaxim\BlogMaxim\Controllers\AdminController.cs:line 70
at lambda_method(Closure , ControllerBase , Object[])
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
InnerException:
Вы пытались отладить? – Marusyk
В нем говорится, что «var us» имеет значение null. Я не понимаю, как это может быть пустым. – Maxim
Попробуйте использовать это в первой строке вместо текущей: 'var datastore = new UserStore (новый ApplicationDbContext());' Также убедитесь, что dataStore указывает на правильную базу данных, которую вы можете знать, отлаживая ваш код Я подозреваю, что ваша строка подключения к базе данных не используется системой идентификации ASP.Net. –
Sunil