【发布时间】:2021-08-15 17:44:12
【问题描述】:
我正在开发一个用于学习目的的小型 .net core 3.1 应用程序,我有一个 Razor Pages 项目用作表示层 (UI)、一个用于域的链接库和一个用于数据访问的链接库以及一个用于业务层的链接库.
我正在尝试将核心身份集成到 DAL 中,我已成功创建表等,但我无法使用数据访问层中的数据库上下文构建身份,我的数据库上下文如下所示:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=DESKTOP-9CTCUHB;
Database= xyz;
Integrated Security= True");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Business>()
.HasOne(e => e.BusinessProfile)
.WithOne(b => b.Business)
.HasForeignKey<BusinessProfile>(e => e.BusinessId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Business>()
.HasMany(e => e.Bookings)
.WithOne(b => b.Business)
.HasForeignKey(e => e.BusinessID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Business>()
.HasMany(e => e.Serivces)
.WithOne(b => b.Business)
.HasForeignKey(e => e.BusinessID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<AppUser>()
.HasOne(e => e.Business)
.WithOne(b => b.BusinessOwnerUser)
.HasForeignKey<Business>(b => b.BusinessOwnerUserId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Business>()
.HasOne(e => e.Type)
.WithOne(b => b.Business)
.HasForeignKey<BusinessType>(e => e.BusinessID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Business>()
.HasOne(e => e.BusinessOwnerUser)
.WithOne(b => b.Business)
.HasForeignKey<AppUser>(e => e.BusinessID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Booking>()
.HasMany(e => e.ServiceBooking)
.WithOne(b => b.Booking)
.HasForeignKey( e => e.BookingID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<Service>()
.HasMany(e => e.ServiceBooking)
.WithOne(b => b.Service)
.HasForeignKey( e => e.ServiceID)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<PaymentInfo>()
.HasOne(e => e.PaymentMethod)
.WithOne(b => b.Payment)
.HasForeignKey<PaymentMethod>(e => e.PaymendInfoID)
.OnDelete(DeleteBehavior.NoAction);
我的 RazorUI 启动看起来像
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MLContext>();
services.AddRazorPages();
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<MLContext>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
我正在使用 MLContext 搭建 Core Identity,但出现以下错误:
我已经尝试了几乎所有与包不匹配等相关的解决方案,我相信这与 DbContext 有关。
任何帮助都会很棒,提前感谢您。
【问题讨论】:
-
尝试在 web 项目中搭建 DbContext,然后将类移动到数据访问层。
-
同样的错误,但感谢您的帮助。
-
你可以从终端使用脚手架吗? docs.microsoft.com/en-us/aspnet/core/security/authentication/…。使用
--verbose标志运行它以查看实际阻止该过程的原因。
标签: c# .net asp.net-core