使用单个 Table 时的 EF Core 继承查询
EF Core Inheritance Queries When Using a Single Table
这是我一直在研究的 .NET EF Core 简化方案:
abstract class Colour
class Blue : Colour
class Green : Colour
class MyClass {
public List<Colour> Colours { get; set; }
}
我已经设置了数据库,所有颜色都集中在一个 table:
public DbSet Blues { get;放; }
public DbSet Greens { get;放; }
builder.Entity<Colour>()
.ToTable("Colours")
.HasDiscriminator<int>("ColourType")
.HasValue<Blue>((int)ColourType.Blue)
.HasValue<Green>((int)ColourType.Green);
当我使用 LINQ 进行查询时,我可以执行以下操作:
List<Colours> MyList = MyClass.Colours;
以上查询returns所有颜色类型的列表。
我的问题是这样的。如何执行直接 LINQ 查询来检索所有颜色?不可能做到:DbContext.Colours。我的选项是 DbContext.Blues 和 DbContext.Greens。另一种情况是当我想检索颜色但我不知道它是什么类型时。
How do I do a direct LINQ query to retrieve all colours?
您已经将 Color 配置为 DbContext 中的实体,因此您可以简单地编写
var colors = db.Set<Color>().ToList();
或者为其添加一个DbSet:
public DbSet<Blue> Blues { get; set; }
public DbSet<Green> Greens { get; set; }
public DbSet<Color> Colors{ get; set; }
这是我一直在研究的 .NET EF Core 简化方案:
abstract class Colour
class Blue : Colour
class Green : Colour
class MyClass {
public List<Colour> Colours { get; set; }
}
我已经设置了数据库,所有颜色都集中在一个 table:
public DbSet Blues { get;放; } public DbSet Greens { get;放; }
builder.Entity<Colour>()
.ToTable("Colours")
.HasDiscriminator<int>("ColourType")
.HasValue<Blue>((int)ColourType.Blue)
.HasValue<Green>((int)ColourType.Green);
当我使用 LINQ 进行查询时,我可以执行以下操作:
List<Colours> MyList = MyClass.Colours;
以上查询returns所有颜色类型的列表。
我的问题是这样的。如何执行直接 LINQ 查询来检索所有颜色?不可能做到:DbContext.Colours。我的选项是 DbContext.Blues 和 DbContext.Greens。另一种情况是当我想检索颜色但我不知道它是什么类型时。
How do I do a direct LINQ query to retrieve all colours?
您已经将 Color 配置为 DbContext 中的实体,因此您可以简单地编写
var colors = db.Set<Color>().ToList();
或者为其添加一个DbSet:
public DbSet<Blue> Blues { get; set; }
public DbSet<Green> Greens { get; set; }
public DbSet<Color> Colors{ get; set; }