Ich habe diese Ausnahme erhalten:
Während der Verarbeitung der Anfrage ist eine nicht behandelte Ausnahme aufgetreten.
SqlException: Der Wert NULL kann nicht in Spalte „FirstName“, Tabelle „VolunteerCenterDB“ eingefügt werden. dbo.AspNetUsers'; Die Spalte erlaubt keine Nullen. INSERT schlägt fehl.
Die Anweisung wurde beendet.
Microsoft.Data.SqlClient.SqlCommand+c.b__189_0(Task Ergebnis)
Ich bin verwirrt, ob das Problem am Modell meines Benutzers liegt oder nicht Program.cs.
Ich dachte, ich sollte firstName und lastName auf Nullwerte setzen, aber ich glaube nicht, dass das Sinn macht. Da ich andere Optionen habe, weiß ich nicht, was ich sonst noch tun könnte?
Code: Select all
User.cs
Code: Select all
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; }
}
Code: Select all
Program.cs
Code: Select all
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();
Code: Select all
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();
}
}
}