如何从EF模型中获取EntityObject的列表

时间:2010-07-09 16:38:54

标签: entity-framework entity

我需要能够迭代EF模型中的EntityObjects列表。

例如..

foreach (System.Data.Objects.DataClasses.EntityObject eObject in ????)
{
}

从我所看到的模型上下文中没有这样的公共枚举器。

有人做过这个吗?

2 个答案:

答案 0 :(得分:3)

这里的问题是我需要一种动态的方法来迭代EntityObjects,它们也是EDMX中的类型。我需要列出实体名称及其属性。非常感谢Craig Stuntz带领我走上正确的道路来解决这个问题。这是我提出的解决问题的最终代码。

EmployeesEntities context = new EmployeesEntities();
MetadataWorkspace workspace = context.MetadataWorkspace;

workspace.LoadFromAssembly(Assembly.Load(@"WindowsFormsApplication10"));

ItemCollection itemCol = workspace.GetItemCollection(DataSpace.OSpace);

StringBuilder sb = new StringBuilder();
foreach (EdmType eType in itemCol)
{
    if (eType.GetType().BaseType == typeof(System.Data.Metadata.Edm.EntityType))
    {
        sb.Append(string.Format("Entity: {0} ", eType.Name));
        foreach (EdmProperty prop in 
            ((System.Data.Metadata.Edm.EntityType)(eType)).Properties)
        {
            sb.Append(string.Format("Property: {0} ", prop.Name));
        }

    }
}
MessageBox.Show(sb.ToString());

答案 1 :(得分:1)

从您的评论中,我认为,尽管您的问题中有代码,但您要求CSDL中的实体类型列表而不是对象列表。 There's a demo of that here