实体框架:获取具有特定类型的所有实体

Posted

技术标签:

【中文标题】实体框架:获取具有特定类型的所有实体【英文标题】:Entity Framework : get all entities with specific type 【发布时间】:2017-08-09 22:22:15 【问题描述】:

我正在使用 Entity Framework 将数据读/写到数据库中,并想知道是否有办法按类型获取实体。例如:我有Student 表和Clas-s-room 表(实际上,我有一堆表)。我想通过使用类型或实体名称来获取所有学生。基本上我需要一些通用的东西来从数据库中读取数据。

我的解决方案是使用反射来读取返回IQueryableDbContext 属性,但似乎应该有另一种方法。如果是这样,有人可以告诉我该怎么做吗?

我需要这样的东西:

dbContext.GetEntities<T>()

dbContext.GetEntities(Type entityType)

【问题讨论】:

你想如何指定类型?也许你应该添加一些暂定代码来阐明你想要什么。 我认为它有点不清楚,但不应该关闭。 @marc_s 给出了适当的答案 【参考方案1】:

你在找这个吗?

DbSet<T> allEntities = yourDbContext.Set<T>();  

您可以将T 替换为您的任何实体类型,例如Student:

DbSet<Student> allStudents = yourDbContext.Set<Student>();  

如果您需要IQueryable,只需使用.AsQueryable()

IQueryable<Student> allStudents = yourDbContext.Set<Student>().AsQueryable();  

请研究official MSDN documentation on DbContext 以了解该类的更多详细信息以及更多属性和方法

【讨论】:

以上是关于实体框架:获取具有特定类型的所有实体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架中的 DBContext 获取在另一列中具有重复数据的所有 ID?

NSPredicate 用于获取具有特定课程名称的所有学生?

以编程方式:列出在实体框架模型中找到的所有存储过程

核心数据:获取特定对象的多对多关系中的所有实体?

多对多(自相关)特定订单实体框架

CoreData 获取问题:获取具有特定日期数组的实体