Muszę zaktualizować istniejącą witrynę opartą na DDS nad strukturą Entity Framework i wykorzystuje trzy różne modele baz danych z trzech różnych baz danych. To, czego potrzebuje, to prosty dodatek do strony ListDetails: przycisk eksportu do XML ...
Dodanie przycisku jest łatwe. Tworzenie kodu XML również nie jest trudne. Wyzwanie polega na uzyskaniu odpowiedniej tabeli do wyeksportowania, przejrzenia wszystkich rekordów i pól oraz wygenerowania XML na podstawie dowolnej ze 100 tabel w systemie!
Tak więc mój przycisk wywołuje procedurę obsługi eksportu (ashx), która generuje XML na podstawie tabeli, której nazwę otrzymuje za pośrednictwem parametrów. Kod, który mam, jest mniej więcej taki:Eksport do XML z witryny dynamicznych danych
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);
Niestety, działa to tylko w jednym kontekście i mam trzy. (Ale ten jest głównym kontekstem.) (Poza tym drugi parametr może być użyty do określenia właściwego kontekstu.) I chociaż pozwala mi to określić typ jednostki, który jest potrzebny, nadal nie zapewni mi dostępu do jego rekordów. i pola.
Jak uzyskać dane dla tego obiektu? (Filtry nie są ważne, eksport zwróci wszystkie dane.)
I nie, bez EF4. Nie .NET 4. Jest to starszy projekt VS2008 i nie mogą być modyfikowane za dużo, ani nie może być zmodernizowane ...
Zasadniczo querystring zawiera dwa parametry: ContextID i QueryID. ContextID informuje mnie, z którego kontekstu korzystać, a ponieważ mam tylko trzy różne konteksty, proste polecenie przełączające rozwiązuje to dla mnie. Ale jeden z kontekstów zawiera ponad 60 zapytań, z których każdy jest powiązany z jedną tabelą bazy danych. Dynamiczna strona danych zapewnia mi opcje dodawania, edytowania i usuwania rekordów z tej tabeli, ale musi zostać wyeksportowana w formacie określonym przez mój niestandardowy kod. Ale w przypadku 60 tabel zbyt wiele jest do napisania instrukcji switch dla każdego zapytania, więc potrzebuję czegoś bardziej ogólnego.
Czy mówisz, że nie możesz połączyć się z innym kontekstem EF innym niż główny kontekst? – WVDominick
W rzeczywistości program obsługi wywozu musi być również dostępny z innych lokalizacji, a użytkownicy muszą mieć możliwość dodania go do zakładek. Mogę uzyskać odpowiedni kontekst, ale teraz muszę przejść przez właściwe zapytanie, z wszystkimi polami i wartościami, aby wygenerować niestandardowy kod XML. –