通过通用T获取实体对象的列表,通用T是EntityObject的类型

时间:2014-08-07 11:58:04

标签: c# generics entity-framework-4

我正在使用EF 4,我想创建泛型方法,这将允许我从只有两列的表中加载数据 - 我确信它存在于每个表和实体中。 我的问题是我不知道如何获得只知道实体类型的实体列表。

    Dictionary<long, string> GetList<T>() where T : System.Data.Objects.DataClasses.EntityObject
    {
        Dictionary<long, string> list = new Dictionary<long, string>();

        //var entityList = this.context.GetEntitiesByType(T);
        //
        foreach (var entity in entityList)
        {
            list.Add(typeof(T).GetProperty("Id").GetValue(entity, null),
                     typeof(T).GetProperty("Name").GetValue(entity, null))
        }
        return list;
    }

是否有可能获得此列表?作为一种解决方法,我可以使用方法

获取表名
    dbContext.GetTableName<T>();

并尝试执行sql查询,但这似乎是个坏主意。有什么想法吗 ?

1 个答案:

答案 0 :(得分:1)

你应该使用CreateObjectSet&lt; T&gt;()返回一个ObjectSet&lt; T&gt;。

用法:

context.CreateObjectSet<T>()

了解更多信息http://msdn.microsoft.com/en-us/library/dd382944(v=vs.100).aspx