Мне нужно обновить существующий сайт, основанный на 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 сообщает мне, какой контекст использовать, и, поскольку у меня есть только три разных контекста, простая команда switch решает эту проблему за меня. Но один из контекстов содержит 60+ запросов, каждый из которых относится к одной таблице базы данных.Сайт динамических данных предоставляет мне возможность добавлять, редактировать и удалять записи из этой таблицы, но ее нужно экспортировать в формате, определяемом моим пользовательским кодом. Но с 60 таблицами слишком сложно писать оператор switch для каждого запроса, поэтому мне нужно что-то более общее.