如何以编程方式了解实体框架模型中的所有对象

时间:2013-04-16 00:26:06

标签: entity-framework

我试图找出是否有办法可以迭代实体框架模型中的所有对象?我尝试通过intellisense和msdn以及stackoverflow查看,但无法正确识别与我的查询匹配的任何内容。

以下内容......

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

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

我不希望必须更改应用程序才能添加新报告。这是我写这个应用程序的第一个障碍......我敢肯定会有其他人。因为应用程序是针对我们的开发团队的,所以我不会担心有人试图以一种没有意义的方式查询数据......我也希望有一个绝对最小的进入障碍,因为我们可以不要为我们要跟踪的所有内容撰写报告。

由于

1 个答案:

答案 0 :(得分: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中明确列出的类型。