Как исправить ошибку при регистрации пользователя в моем проекте ASP.NET Core MVCC#

Место общения программистов C#
Ответить
Anonymous
 Как исправить ошибку при регистрации пользователя в моем проекте ASP.NET Core MVC

Сообщение Anonymous »

Я создаю проект ASP.NET Core MVC с учетными записями удостоверений, и когда я нажимаю кнопку регистрации (на странице регистрации).
Я получил следующее исключение:
Во время обработки запроса произошло необработанное исключение.
SqlException: невозможно вставить значение NULL в столбец «FirstName» таблицы. 'VolunteerCenterDB.dbo.AspNetUsers'; столбец не допускает нулевых значений. Ошибка INSERT.
Выполнение оператора прекращено.
Microsoft.Data.SqlClient.SqlCommand+c.b__189_0(Task результат)

Меня смущает, если проблема в модели моих пользователей или в Program.cs.
Я подумал, что мне следует сделать firstName и LastName обнуляемыми, но я не думаю, что это имеет смысл. Поскольку у меня есть другие варианты, я не знаю, что еще я могу сделать?
User.cs:
public class User : IdentityUser
{
public User()
{
this.Id = Guid.NewGuid().ToString();
}

public string FirstName { get; set; }
public string LastName { get; set; }

public virtual ICollection VolunteerSignups { get; set; }
public virtual ICollection Events { get; set; }
public virtual ICollection StatusHistories { get; set; }
}

Program.cs:
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using VolunteerCenterMVCProject.Data;
using VolunteerCenterMVCProject.Models;
using VolunteerCenterMVCProject.Services.Interfaces;
using VolunteerCenterMVCProject.Services;

var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

builder.Services.AddDbContext(options =>
options.UseSqlServer(connectionString));

// Identity configuration
/*builder.Services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles()
.AddEntityFrameworkStores();
*/
builder.Services.AddDefaultIdentity()
.AddRoles()
.AddEntityFrameworkStores();

// Add MVC and Razor Pages
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

// Register services
builder.Services.AddTransient();

var app = builder.Build();

// Seed data on application startup
if (app.Environment.IsDevelopment())
{
using (var serviceScope = app.Services.CreateScope())
{
var dbContext = serviceScope.ServiceProvider.GetRequiredService();
dbContext.Database.Migrate();
}

app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}

// Configure middleware pipeline
app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

// Map routes
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();

app.Run();

Не уверен, но я поделюсь своим DbContext:
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using VolunteerCenterMVCProject.Models;

namespace VolunteerCenterMVCProject.Data
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}

public DbSet Locations { get; set; }
public DbSet Categories { get; set; }
public DbSet Signups { get; set; }
public DbSet statusHistories { get; set; }
public DbSet Events { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

#region Categories
modelBuilder.Entity()
.HasKey(x => x.CategoryId);
#endregion

#region Locations
modelBuilder.Entity()
.HasKey(c => c.LocationId);
#endregion

#region VolunteerSingups

modelBuilder.Entity()
.HasKey(c => c.SignupId);

modelBuilder.Entity()
.HasOne(x => x.User)
.WithMany(u => u.VolunteerSignups)
.HasForeignKey(x => x.VolunteerId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity()
.HasOne(x => x.Event)
.WithMany(e => e.VolunteerSignups)
.HasForeignKey(x => x.EventId)
.OnDelete(DeleteBehavior.Restrict);

#endregion

#region StatusHistory
modelBuilder.Entity()
.HasKey(c => c.StatusHistoryId);

modelBuilder.Entity()
.HasOne(x => x.Event)
.WithMany(x => x.StatusHistories)
.HasForeignKey(x => x.EventId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity()
.HasOne(x => x.User)
.WithMany(x => x.StatusHistories)
.HasForeignKey(x => x.ChangedBy)
.OnDelete(DeleteBehavior.Restrict);

#endregion

#region Events
modelBuilder.Entity()
.HasKey(c => c.EventId);

modelBuilder.Entity()
.HasOne(x => x.Category)
.WithMany(x => x.Events)
.HasForeignKey(x => x.CategoryId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity()
.HasOne(x => x.Location)
.WithMany(x => x.Events)
.HasForeignKey(x => x.LocationId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity()
.HasOne(x => x.User)
.WithMany(u => u.Events)
.HasForeignKey(x => x.CreatedBy)
.OnDelete(DeleteBehavior.Restrict);

#endregion
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);

optionsBuilder.UseLazyLoadingProxies();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... vc-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»