为什么两者都有DbContext:

System.Data.Entity和Microsoft.EntityFrameworkCore

在此基础上,我想使用dotnet ef migrations CLI命令创建我的表,其中一些继承自单个基本模型,因此我想使用:OnModelCreating(DbModelBuilder modelbuilder)将继承模型映射到table-per -concrete-type,如下:

public class StockDbContext : DbContext
 {
    public virtual Microsoft.EntityFrameworkCore.DbSet<ImagesModel> Images { get; set; }
    public virtual Microsoft.EntityFrameworkCore.DbSet<PortfolioPieceModel> PortfolioPieces { get; set; }
    public virtual Microsoft.EntityFrameworkCore.DbSet<SkillsModel> Skills { get; set; }
    public virtual Microsoft.EntityFrameworkCore.DbSet<QualificationsModel> Qualifications { get; set; }

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<QualificationsModel>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Qualifications");
        });
        modelBuilder.Entity<PortfolioPieceModel>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Portfolio");
        });
        modelBuilder.Entity<SkillsModel>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Skills");
        });
        modelBuilder.Entity<ImagesModel>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Images");
        });
    }

如果我使用System.Data.Entity中的DbContext,则接受此函数,但我无法通过addEntityFrameworkSqlServer将其配置为startup.cs中的服务,因为它无法从一种类型的DbContext转换为另一种类型

services.AddEntityFrameworkSqlServer()
      .AddDbContext<StockDbContext>(options =>
           options.UseSqlServer(Configuration.GetConnectionString("Default");

如果我使用Microsoft.EntityFrameworkCore中的DbContext,那么该函数需要一个类型为ModelBuilder的参数,该参数没有方法映射 . 但是这个版本可以在addDbContext调用中使用 .

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="EntityFramework" Version="6.2.0" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.8" />
<!--<PackageReference 
Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" 
/>-->
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" 
Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" 
Version="2.0.3" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference 
Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
Version="2.0.3" />
</ItemGroup>

</Project>

包版本使用^^

tldr: 如何创建一个DbContext类,EntityFrameworkCore CLI可以使用该类从继承自相同基本模型的模型生成单独的表?