C# 为什么运行实体框架迁移后只有一个表?

C# 为什么运行实体框架迁移后只有一个表?,c#,entity-framework-6,C#,Entity Framework 6,我有以下一套模型: 用户: 食谱: public class Recipe { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public string Name { get; set; } public User Author { get; set; } public int LikesCount { get; set; }

我有以下一套模型:

用户:

食谱:

public class Recipe
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public string Name { get; set; }

    public User Author { get; set; }

    public int LikesCount { get; set; }

    public int DislikesCount { get; set; }

    public int Time { get; set; }

    public ICollection<Ingridient> Ingridients { get; set; }

    public ICollection<RecipeStep> Steps { get; set; }

    public Category Category { get; set; }

    public int ServingsCount { get; set; }

    public int Image { get; set; }

    public decimal Price { get; set; }

    public DateTime CreatedAt { get; set; }

    public DateTime UpdatedAt { get; set; }

    public Recipe()
    {
        CreatedAt = DateTime.UtcNow;
        UpdatedAt = DateTime.UtcNow;
    }
}
它看起来像是仅针对
用户的迁移
表。但是其他的呢?当我运行
dotnet ef数据库更新时
我只有一个表
Users

那怎么了?我是EF的新手,也许我不明白它是如何工作的。你能描述一下如何从我的模型中生成所有表吗

附言。 该平台是.NETCore2.2.300。项目类型是WebAPI。数据库是PostgreSQL

更新 我的数据库上下文是

public class ApplicationContext : DbContext
{
    private readonly string _connectionString;

    public ApplicationContext(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("Recipes");
    }

    public DbSet<User> Users { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseNpgsql(_connectionString);
    }
}
公共类应用程序上下文:DbContext
{
私有只读字符串_connectionString;
公共应用程序上下文(IConfiguration配置)
{
_connectionString=configuration.GetConnectionString(“配方”);
}
公共数据库集用户{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseNpgsql(_connectionString);
}
}
我已经通过标准DI系统注入了它

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
       .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

        services.AddEntityFrameworkNpgsql()
            .AddDbContext<ApplicationContext>()
            .BuildServiceProvider();

        services.AddSingleton<IAuthService, AuthService>();
    }
public void配置服务(IServiceCollection服务)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddEntityFrameworkNpgsql()
.AddDbContext()
.BuildServiceProvider();
services.AddSingleton();
}

您已将一组
用户
添加到数据库上下文中

public DbSet<User> Users { get; set; }

注意:您可以在不将
DbSet
添加到
DbContext
的情况下映射和迁移实体,但这涉及到在
OnModelCreating
中设置实体

您是否已将其他模型类添加到DBContext?显示您的上下文类。我已在答案中添加了我的db上下文。但我不明白我该在哪里使用它?我以前在服务和简单控制器中使用过它。为了让EF创建表,您必须将它们作为数据库集添加到上下文中。否则EF不知道这些类应该在database.Ohhhh中。谢谢)我只是忘记了)它有效,我可以看到所有有关系的桌子)再次谢谢)
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
       .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

        services.AddEntityFrameworkNpgsql()
            .AddDbContext<ApplicationContext>()
            .BuildServiceProvider();

        services.AddSingleton<IAuthService, AuthService>();
    }
public DbSet<User> Users { get; set; }
public DbSet<Recipe> Recipes { get; set; }