Asp. net mvc ошибка System.Data.SqlClient.SqlException: 'Неверное имя объекта' AspNetUsers '.' - PullRequest
0 голосов
/ 01 апреля 2020

Я создал asp. net MVC веб-сайт с базами данных. Я недавно добавил личность базы данных. Все отлично работает на моей машине. Однако, когда я запускаю его на другом компьютере, он выдает мне эту ошибку:

System.Data.SqlClient.SqlException: 'Invalid object name 'AspNetUsers'.'

Screenshot

Это мой AccountController

public class AccountController : Controller
    {
        private UserManager<IdentityUser> userManager;
        private SignInManager<IdentityUser> signInManager;
        public AccountController(UserManager<IdentityUser> userMgr,
                       SignInManager<IdentityUser> signInMgr)
        {
            userManager = userMgr;
            signInManager = signInMgr;
            IdentitySeedData.EnsurePopulated(userMgr).Wait();
        }

        [AllowAnonymous]
        public ViewResult Login(string returnUrl)
        {
            return View(new LoginModel
            {
                ReturnUrl = returnUrl
            });
        }
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Login(LoginModel loginModel)
        {
            if (ModelState.IsValid)
            {
                IdentityUser user =
                await userManager.FindByNameAsync(loginModel.Name);
                if (user != null)
                {
                    await signInManager.SignOutAsync();
                    if ((await signInManager.PasswordSignInAsync(user,
                    loginModel.Password, false, false)).Succeeded)
                    {
                        return Redirect(loginModel?.ReturnUrl ?? "/Admin/Index");
                    }
                }
            }
            ModelState.AddModelError("", "Invalid name or password");
            return View(loginModel);
        }

        public async Task<RedirectResult> Logout(string returnUrl = "/")
        {
            await signInManager.SignOutAsync();
            return Redirect(returnUrl);
        }
    }

Это мои IdentitySeedData

public class IdentitySeedData
    {
        private const string adminUser = "Admin";
        private const string adminPassword = "Secret123$";

        public static async Task EnsurePopulated(UserManager<IdentityUser> userManager)
        {

            IdentityUser user = await userManager.FindByIdAsync(adminUser);
            if (user == null)
            {
                user = new IdentityUser("Admin");
                await userManager.CreateAsync(user, adminPassword);
            }
        }
    }

Ошибка при запуске на другом компьютере всегда возникает здесь:

 public AccountController(UserManager<IdentityUser> userMgr,
                       SignInManager<IdentityUser> signInMgr)
        {
            userManager = userMgr;
            signInManager = signInMgr;
            IdentitySeedData.EnsurePopulated(userMgr).Wait();
        }

Ссылка к проекту:

https://github.com/DemarioDouce/SoccerClub

Мне бы очень хотелось узнать, как устранить эту ошибку.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

I go через ту же проблему. некоторое время пользователь создает настраиваемый класс для членства, поэтому asp. net не создает таблицу AspNetUsers.

Например:

public class Member : IdentityUser
{
    Public int MemberID { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string Password { get; set; }

}  

Попробуйте пометить таблицу IdentityUser

[Table("AspNetUsers")]
public class Member : IdentityUser
{
    Public int MemberID { get; set; }
    public string Name { get; set; }
    public string Family { get; set; }
    public string Password { get; set; }

}

Я надеюсь, что это работает для вас так же, как и для меня.

0 голосов
/ 03 апреля 2020

Вот решение:

using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
    var context = serviceScope.ServiceProvider.GetRequiredService<AppIdentityDbContext>();
    context.Database.EnsureDeleted();
    context.Database.Migrate();
}

просто добавьте это в файл startup.cs здесь:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...