如何使用实体框架从动态对象集<t>动态获取对象T的属性?</t>

时间:2012-09-27 18:48:08

标签: c# entity-framework reflection

我正在尝试创建一个报表屏幕,该屏幕会动态调整自身以适应实体框架生成的模型中存在的数据库视图的内容。

要获取我正在使用此代码的实体:

var view = context.GetType().GetProperty(viewName).GetValue(context, null);

此代码返回满足我需求的ObjectSet<viewType>

现在我需要获取视图类型的属性,以便我可以获取列。

我试着用这样的东西:

var methodInfo = view .GetType().GetMethod("First");
var properties = methodInfo.ReturnType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

但它没有找到方法“第一”,我不知道在哪里可以找到一些帮助,我怎样才能使这个工作。

3 个答案:

答案 0 :(得分:0)

我相信,当你真正想要first()时,你正试图获得ObjectSet<viewType> viewType的方法。所以这就是你需要的。

var methodInfo = view.GetType().GetGenerericArguments()[0].GetMethod("First");

答案 1 :(得分:0)

首先是System.Linq.Queryable上的扩展方法。

答案 2 :(得分:0)

var gtype = view.GetType().GetGenericArguments()[0];

如果view是ObjectSet&lt; FooBars&gt;

gtype将是FooBars

然后你可以在gtype上调用GetProperties。