Как получить список EntityObject из модели EF - PullRequest
1 голос
/ 09 июля 2010

Мне нужно иметь возможность перебирать список объектов EntityObject, которые находятся в модели EF.

Например.

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

Из того, что я вижу, контекст моделитакого публичного перечислителя нет.

Кто-нибудь когда-нибудь делал это?

Ответы [ 2 ]

3 голосов
/ 09 июля 2010

Проблема была в том, что мне нужен был динамический способ перебирать объекты EntityObject, которые также считаются типами в EDMX.Мне нужно было перечислить имя сущности и ее свойства.Большое спасибо Крейгу Штунцу за то, что он помог мне решить эту проблему.Вот окончательный код, который я придумал, чтобы решить мою проблему.

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 голос
/ 09 июля 2010

Из ваших комментариев я думаю, что, несмотря на код в вашем вопросе, вы запрашиваете список типов сущностей в CSDL, а не список объектов. Вот демонстрация этого здесь .

...