【问题标题】:Loop through all the DBSet(of TEntity) on a DBContext循环遍历 DBContext 上的所有 DBSet(of TEntity)
【发布时间】:2015-06-17 03:35:20
【问题描述】:

我正在使用实体框架 6.1、DbContext、数据库优先。 我知道我可以通过以下名称获取 DBset: context.Myobj1 , context.Myobj2 .....

但是有没有可能做一个 for...each 循环并在 DbContext 上一个接一个地获取所有 DbSet(of Tentity)?

【问题讨论】:

  • 你可以使用反射。这就是 DbContext 为发现模型所做的工作。
  • 看看romiller.com/2014/04/08/ef6-1-mapping-between-types-tables (((IObjectContextAdapter)ctx).ObjectContext.MetadataWorkspace).GetItems<EntityContainer>(DataSpace.CSpace).Single().EntitySets 这样的东西应该可以解决问题

标签: entity-framework entity-framework-6


【解决方案1】:

您需要发现实体的类型。这取决于您的应用程序。您可以使用反射来发现这些类型。或者您可以硬编码实体的类型。

在此之后,您可以循环设置:

var types = new [] { typeof(User), typeof(Role) }; // just example

foreach(var type in types)
{
    foreach(var entity in context.DbSet(type))
    { ... }
}

【讨论】:

  • “您可以使用反射来发现这些类型” - 是的,问题是如何做到这一点。 “或者你可以硬编码你的实体类型” - 好吧,当然,但这不是很有帮助。
猜你喜欢
  • 2021-05-12
  • 1970-01-01
  • 2017-03-09
  • 2021-11-27
  • 2018-12-02
  • 1970-01-01
  • 2018-02-15
  • 2012-04-06
  • 2014-04-04
相关资源
最近更新 更多