[英]How do I know all the objects in my entity framework model programatically
我试图找出是否有一种方法可以迭代实体框架模型中的所有对象? 我尝试查看intellisense,msdn和stackoverflow,但无法正确识别出与我的查询匹配的任何内容。
类似于以下内容...
foreach(var item in entities.Context.getAllObjects())
{
Console.Write(item.Name);
}
这样做的目的是,我希望能够为我们的开发人员和开发团队编写一些有关数据库对象的报告,以更好地了解生产服务器中发生的情况。 我已经将数据放入要报告的单独数据库中的表中。 但是,与其编写我们可能希望也可能不希望看到的特定报告。 我希望能够提供某种可能列出可能的报告表的界面。 然后有一些选项可以按日期,dayOfWeek或Hour从该日期到该日期进行分组。
我不希望为了添加新报告而必须对应用程序进行更改。 这是我编写此应用程序的第一个障碍...我敢肯定还会有其他人。 因为该应用程序是为我们的开发团队服务的,所以我不必担心有人试图以一种没有意义的方式来查询数据……而且我也希望尽可能地减少进入的绝对障碍不要为我们要跟踪的所有内容编写报告。
谢谢
您需要这样的东西:
var typesInYourContext = context.GetType()
.GetProperties()
.Where(p => p.PropertyType.IsGenericType && typeof(DbSet<>).IsAssignableFrom(p.PropertyType.GetGenericTypeDefinition())
.Select(p=>p.PropertyType.GetGenericArguments()[0]);
(我还没有编译它,但它应该让您有大致的了解)
注意:EF实际上可以引入比上下文中列出的类型更多的类型,但这只会获得您在DbContext中显式列出的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.