Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何获取EntityObject';来自EF模型的s_Entity Framework_Entity - Fatal编程技术网

Entity framework 如何获取EntityObject';来自EF模型的s

Entity framework 如何获取EntityObject';来自EF模型的s,entity-framework,entity,Entity Framework,Entity,我需要能够迭代EF模型中的EntityObjects列表 例如 foreach (System.Data.Objects.DataClasses.EntityObject eObject in ????) { } 从我所看到的模型上下文中没有这样的公共枚举器 有人这样做过吗?根据您的评论,我认为,尽管您的问题中有代码,但您要求的是CSDL中的实体类型列表,而不是对象列表 从您的评论中,我认为,尽管您的问题中有代码,但您要求的是CSDL中的实体类型列表,而不是对象列表

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

例如

foreach (System.Data.Objects.DataClasses.EntityObject eObject in ????)
{
}
从我所看到的模型上下文中没有这样的公共枚举器


有人这样做过吗?

根据您的评论,我认为,尽管您的问题中有代码,但您要求的是CSDL中的实体类型列表,而不是对象列表

从您的评论中,我认为,尽管您的问题中有代码,但您要求的是CSDL中的实体类型列表,而不是对象列表
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());

这里的问题是,我需要一种动态的方法来遍历eDMX中也考虑类型的EntIy对象。我需要列出实体名称及其属性。非常感谢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());

你是说你想迭代数据库中的每个对象?在
对象上下文中
?还有别的吗?你能更具体地说明你想做什么以及为什么吗?我需要能够迭代EDMX中的所有EntityObjects,如果数据库有两个表,Employee和Worker,那么这些表将在EF中转换为实体对象。模型中的所有实体都有公共枚举器吗?如果您发布代码或XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010),以很好地格式化和语法突出显示它!是的,我非常熟悉ssdl、csdl和msl,我只是希望我不必为了这一个而去解析XML,你会认为EntityModel会为EntityObjectsOh提供一个公共枚举器,我明白了:你想要的是类型,而不是演示代码所示的对象。EDMX不定义对象,但指定类型。您的意思是要迭代数据库中的每个对象?在
对象上下文中
?还有别的吗?你能更具体地说明你想做什么以及为什么吗?我需要能够迭代EDMX中的所有EntityObjects,如果数据库有两个表,Employee和Worker,那么这些表将在EF中转换为实体对象。模型中的所有实体都有公共枚举器吗?如果您发布代码或XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010),以很好地格式化和语法突出显示它!是的,我非常熟悉ssdl、csdl和msl,我只是希望我不必为了这一个而去解析XML,你会认为EntityModel会为EntityObjectsOh提供一个公共枚举器,我明白了:你想要的是类型,而不是演示代码所示的对象。EDMX没有定义对象,但它确实指定了类型。嘿,克雷格,非常感谢你的链接。那篇文章让我找到了解决这个问题的正确途径。我还将回答这个问题,并将解决我问题的确切代码链接起来,因为它与文章有点不同。嘿,克雷格,非常感谢你的链接。那篇文章让我找到了解决这个问题的正确途径。我还将回答这个问题,并将解决我的问题的确切代码链接起来,因为它与文章有点不同。