0

我试图找出是否有一种方法可以迭代我的实体框架模型中的所有对象?我尝试查看智能感知、msdn 和 stackoverflow,但无法正确识别与我的查询匹配的任何内容。

类似于以下内容...

foreach(var item in entities.Context.getAllObjects())
{
    Console.Write(item.Name);
}

这样做的重点是,我希望能够为我们的开发人员和 devops 团队编写一些关于数据库对象的报告,以便更好地了解我们的生产服务器中发生的事情。我已经将数据放入要报告的单独数据库中的表中。但不是写我们可能希望或可能不想看到的具体报告。我希望能够提供某种可能列出可能的报告表的界面。然后有一些选项可能按日期、dayOfWeek 或从该日期到该日期的小时分组。

我不希望为了添加新报告而必须更改应用程序。这是我编写这个应用程序的第一个障碍……我相信还会有其他障碍。因为该应用程序是为我们的开发团队准备的,所以我不会担心有人试图以一种没有意义的方式查询数据……而且我也希望有一个绝对最低的进入门槛,因为我们可以不要为我们想要跟踪的所有内容编写报告。

谢谢

4

1 回答 1

0

你需要这样的东西:

var typesInYourContext = context.GetType()
   .GetProperties()
   .Where(p => p.PropertyType.IsGenericType && typeof(DbSet<>).IsAssignableFrom(p.PropertyType.GetGenericTypeDefinition())
   .Select(p=>p.PropertyType.GetGenericArguments()[0]);

(我还没有编译它,它不在我的脑海中,但它应该给你一个大致的想法)

注意:EF 实际上可能会引入比您的上下文中列出的类型更多的类型,但这只会获取您在 DbContext 中明确列出的类型。

于 2013-04-16T02:26:22.100 回答