德博。ASPNetUser 和其他类似的表不会出现在我的服务器资源管理器中



我正在我的MVC5项目中工作,我创建了一个与ApplicationDbContext不同的DbContext,但它继承自同一个类。我一直在开发项目的某些部分,但现在我想添加所有身份验证和授权内容。但是,ASP.NET 为此目的自动创建的表不会显示在我的服务器资源管理器中,尽管我可以使用上下文中名为"用户"和"角色"的集。我已经搜索了原因,但我没有发现任何有用的东西。我希望有人能回答我的问题,以及这是否是一个重要的问题。我添加了我的 DbContext 类的代码。对不起我的英语,因为我知道这很糟糕。

namespace GestionPaladares.Models
{
using System;
using System.Data.Entity;
using System.Linq;
using System.Data.Entity.ModelConfiguration.Conventions;
using GestionPaladares.Models;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

public class PaladarContext : IdentityDbContext<ApplicationUser>
{
// Your context has been configured to use a 'CodeFirstDatabaseModel' connection string from your application's 
// configuration file (App.config or Web.config). By default, this connection string targets the 
// 'GestionPaladares.Models.CodeFirstDatabaseModel' database on your LocalDb instance. 
// 
// If you wish to target a different database and/or database provider, modify the 'CodeFirstDatabaseModel' 
// connection string in the application configuration file.
public PaladarContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
// Add a DbSet for each entity type that you want to include in your model. For more information 
// on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<FoodAndDrink> Foods { get; set; }
public virtual DbSet<SoldBill> SoldBills { get; set; }
public virtual DbSet<CostBill> CostBills { get; set; }
public virtual DbSet<Seller> Sellers { get; set; }
public virtual DbSet<Grocer> Grocers { get; set; }
public virtual DbSet<Owner> Owners { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Measure> Measures { get; set; }
public virtual DbSet<Edge> Edges { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}

在 Dbcontext 中添加应用程序用户

public DbSet<ApplicationUser> ApplicationUser { get; set; }

例如

namespace GestionPaladares.Models
{
using System;
using System.Data.Entity;
using System.Linq;
using System.Data.Entity.ModelConfiguration.Conventions;
using GestionPaladares.Models;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

public class PaladarContext : IdentityDbContext<ApplicationUser>
{
// Your context has been configured to use a 'CodeFirstDatabaseModel' connection string from your application's 
// configuration file (App.config or Web.config). By default, this connection string targets the 
// 'GestionPaladares.Models.CodeFirstDatabaseModel' database on your LocalDb instance. 
// 
// If you wish to target a different database and/or database provider, modify the 'CodeFirstDatabaseModel' 
// connection string in the application configuration file.
public PaladarContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
// Add a DbSet for each entity type that you want to include in your model. For more information 
// on configuring and using a Code First model, see http://go.microsoft.com/fwlink/?LinkId=390109.
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<FoodAndDrink> Foods { get; set; }
public virtual DbSet<SoldBill> SoldBills { get; set; }
public virtual DbSet<CostBill> CostBills { get; set; }
public virtual DbSet<Seller> Sellers { get; set; }
public virtual DbSet<Grocer> Grocers { get; set; }
public virtual DbSet<Owner> Owners { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Measure> Measures { get; set; }
public virtual DbSet<Edge> Edges { get; set; }
public DbSet<ApplicationUser> ApplicationUser { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}

由于使用的是 EF,因此应首先添加迁移,然后从 PM 控制台窗口更新数据库。请注意,您必须从列表中选择正确的项目,并确保代码或应用设置文件中的连接字符串正确。

或者,您必须创建自己的方法来调用启动以为您修复数据库。

public static void EnsureDatabaseCreated(IConfiguration configuration)
{
using (var context = new DatabaseContext(configuration.GetConnectionString(GlobalConstants.APP_SETTINGS_CONNECTION_NAME)))
{
context.Database.Migrate();
}
}

public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
EnsureDatabaseCreated(this.configuration);
}

将 DatabaseContext 类名更改为您的类名。

希望这有帮助。

相关内容

最新更新