使用单个表时的 EF Core 继承查询
这是我一直在研究的 .NET EF Core 简化场景:
abstract class Colour
class Blue : Colour
class Green : Colour
class MyClass {
public List<Colour> Colours { get; set; }
}
我已设置数据库,以便所有颜色都位于一个表中:
public DbSet Blues { get;放; } 公共 DbSet Greens { 获取;放; 当我使用LINQ
builder.Entity<Colour>()
.ToTable("Colours")
.HasDiscriminator<int>("ColourType")
.HasValue<Blue>((int)ColourType.Blue)
.HasValue<Green>((int)ColourType.Green);
查询时,我可以执行以下操作:
List<Colours> MyList = MyClass.Colours;
上面的查询返回所有颜色类型的列表。
我的问题是这样的。如何执行直接 LINQ 查询来检索所有颜色?这是不可能的:DbContext.Colours。我的选项是 DbContext.Blues 和 DbContext.Greens。另一种情况是当我想检索颜色但我不知道它是什么类型时。
Here's a .NET EF Core simplified scenario that I have been working on:
abstract class Colour
class Blue : Colour
class Green : Colour
class MyClass {
public List<Colour> Colours { get; set; }
}
I have set the database up so that all colours are in one table:
public DbSet Blues { get; set; }
public DbSet Greens { get; set; }
builder.Entity<Colour>()
.ToTable("Colours")
.HasDiscriminator<int>("ColourType")
.HasValue<Blue>((int)ColourType.Blue)
.HasValue<Green>((int)ColourType.Green);
When I am querying using LINQ, I can do the following:
List<Colours> MyList = MyClass.Colours;
The above query returns a list of all colour types.
My question is this. How do I do a direct LINQ query to retrieve all colours? It is not possible to do: DbContext.Colours. The options that I have are DbContext.Blues and DbContext.Greens. Another scenario is when I want to retrieve a Colour but I do not know what type it is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您已经将颜色配置为dbContext中的实体,因此可以sip缩写
或为其添加DBSET:
You've already configured Color as an entity in your DbContext, so you can siply write
Or add a DbSet for it: