Проблема подключения ASP.NET MVC Core 2.0 с Entity Framework - PullRequest
0 голосов
/ 09 ноября 2018

У меня очень простое веб-приложение, в котором я пытаюсь позволить людям зарегистрировать пользователя. Поэтому я пытаюсь сохранить данные регистрации пользователей в Entity Framework, но безуспешно.

У меня есть базовая модель и базовое представление, поэтому для краткости я не собираюсь публиковать их прямо сейчас, поскольку не думаю, что проблема заключается в них. Если кто-то хотел бы увидеть их, я опубликую их. Я пытаюсь использовать app.UseAuthentication , и я предполагаю, что некоторая моя логика неверна. Я пытаюсь сохранить в таблице dbo.AspNetUsers .

Startup.cs

    public Startup(IHostingEnvironment env)
    {
        configuration = new ConfigurationBuilder()
                            .AddEnvironmentVariables()
                            .AddJsonFile(env.ContentRootPath + "/appsettings.json")
                            .Build();
    }
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<IdentityDataContext>(options =>           
        options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<IdentityUser, IdentityRole>()
                                        .AddEntityFrameworkStores<IdentityDataContext>()
                                        .AddDefaultTokenProviders();
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseAuthentication();

        app.UseMvc(routes =>
        {
            routes.MapRoute("Default", "{controller=Account}/{action=Index}");
        });

        app.UseFileServer();   
    }

appsettings.json

{
    "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyLocalDB;Trusted_Connection=True;"
    }
}

Контроллер

public class AccountController : Controller
{
    public IActionResult Index()
    {
        return View(new CombinedLoginAndRegisterModel());
    }

    private readonly UserManager<IdentityUser> _userManager;
    private readonly SignInManager<IdentityUser> _signInManager;

    public AccountController(UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }

    //Registration
    [HttpPost]
    public async Task<IActionResult> RegisterUser(CombinedLoginAndRegisterModel cbr)
    {
        var user = new IdentityUser
        {
            Email = cbr.Register.Email
        };

        var result = await _userManager.CreateAsync(user, cbr.Register.Password); //wait

        return View();
    }
}

Контекст данных

public class IdentityDataContext : IdentityDbContext<IdentityUser>
{
    public IdentityDataContext(DbContextOptions<IdentityDataContext> options) : base(options)
    {
        Database.EnsureCreated();
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }

}

Я очень ценю любую помощь и буду отвечать на запросы / комментарии.

EDIT

Index.cshtml

@model CS_config.Models.CombinedLoginAndRegisterModel

<h2>Register account</h2>

@using (Html.BeginForm())
{
    @Html.ValidationSummary()

    @Html.LabelFor(x => x.Register.Email, new { style = "margin-right: 7px;" })
    @Html.TextBoxFor(x => x.Register.Email)<br><br>

    @Html.LabelFor(x => x.Register.Password, new { style = "margin-right: 10px;" })
    @Html.TextBoxFor(x => x.Register.Password)<br><br>

    <button type="submit" name="RegisterUser">Submit</button> //named it to match the Task `RegisterUser` in the Controller
}

1 Ответ

0 голосов
/ 14 ноября 2018

Итак, в конце концов я обнаружил кучу проблем и почему это не сработало. Одна вещь, которую я не сделал, - это выполнить начальную миграцию и / или обновить базу данных с Add-Migration [name] и Update-Database

Большинство других моих проблем более подробно описаны здесь: Действие контроллера не запущено - Простой проект - ASP.NET MVC CORE 2.0 - также проверьте комментарии как к этому посту, так и к связанному посту

Если у кого-то есть такие же проблемы, напишите мне.

...