Dbo.ASPNetUser и другие подобные таблицы не отображаются в моем обозревателе серверов - PullRequest
0 голосов
/ 05 октября 2018

Я работаю в своем проекте MVC5, и я создал DbContext, отличный от ApplicationDbContext, но он наследуется от того же класса.Я занимался разработкой некоторых частей моего проекта, но теперь я хочу добавить все материалы для аутентификации и авторизации.Но таблицы, которые 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>();

        }
    }

}

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Поскольку вы используете EF, вы должны сначала добавить миграцию, а затем обновить базу данных из окна консоли PM.Обратите внимание, что вы должны выбрать правильный проект из списка и быть уверенным в правильной строке подключения в вашем коде или файле appsettings.

Или вам нужно создать свой собственный метод для вызова при запуске для исправления ошибки.база данных для вас.

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 на свое.

Надеюсь, это поможет.

0 голосов
/ 05 октября 2018

Добавить ApplicationUser в 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>();

    }
}

}
...