Мне нужно обновить существующий сайт, основанный на DDS поверх Entity Framework, и он использует три разные модели баз данных из трех разных баз данных. И что ему нужно, так это простое дополнение к странице ListDetails: кнопка экспорта в XML...
Добавить кнопку очень просто. Создание XML также не сложно. Задача состоит в том, чтобы получить правильную таблицу для экспорта, пройтись по всем записям и полям и сгенерировать XML на основе любой из более чем 100 таблиц в системе!
Итак, моя кнопка вызывает обработчик экспорта (ashx), который генерирует XML. на основе таблицы, чье имя она получает через свои параметры. Код у меня примерно такой:
Content_CobaEntities Coba = new Content_CobaEntities();
MetadataWorkspace metadataWorkspace = Coba.MetadataWorkspace;
EntityContainer container = metadataWorkspace.GetItems<EntityContainer>(DataSpace.CSpace).First();
string namespaceName = metadataWorkspace.GetItems<EntityType>(DataSpace.CSpace).First().NamespaceName;
EntitySetBase entitySetBase = container.BaseEntitySets.FirstOrDefault(set => set.ElementType.Name == Entity);
К сожалению, это работает только с одним контекстом, а у меня их три. (Но это основной контекст.) (Кроме того, второй параметр можно использовать для определения правильного контекста.) И хотя он позволяет мне определить необходимый тип сущности, он все равно не предоставит мне доступ к своим записям. и поля.
Итак, как мне получить данные для этого объекта? (Фильтры не важны, экспорт вернет все данные.)
И нет, не EF4. Нет .NET 4. Это старый проект VS2008, и его нельзя сильно изменить или обновить...
По сути, строка запроса содержит два параметра: ContextID и QueryID. ContextID сообщает мне, какой контекст использовать, и, поскольку у меня есть только три разных контекста, простая команда переключения решает эту проблему за меня. Но один из контекстов содержит более 60 запросов, каждый из которых относится к одной таблице базы данных. Сайт динамических данных предоставляет мне возможность добавлять, редактировать и удалять записи из этой таблицы, но ее необходимо экспортировать в формате, определяемом моим пользовательским кодом. Но с 60 таблицами слишком сложно писать оператор switch для каждого запроса, поэтому мне нужно что-то более общее.