Odświeżenie procedury składowanej w ramach entity Framework 3.5

Używam. NET 3.5 SP1, VS 2008 z entity framework. Pierwotnie dodałem do mojego modelu procedurę składowaną, która miała 2 parametry. Później zmieniłem sproc NA tylko 1 parametr. Uruchomiłem opcję menu Update Model From Database i potwierdziłem, że mój sproc został wymieniony w zakładce Refresh. Zakończył Kreator, wyczyścił i przebudował rozwiązanie, a model nigdy nie zmienił podpisu sproc.

Dlaczego nie jest aktualizowana? Czy funkcja aktualizacji modelu z bazy danych jest zepsuta? Czy brakuje mi coś? Dzięki.

Author: forsvarir, 2011-02-14

8 answers

Widziałem dwa problemy z aktualizacją procedury składowanej po dodaniu jej do struktury encji:

    Funkcja Import utworzona do wywołania SPROC nie została zaktualizowana (niepoprawne, nieaktualne parametry) Typ złożony utworzony dla zbioru wyników SPROC nie został zaktualizowany (niepoprawne, nieaktualne pola)

Aktualizacja modelu EDMX (import funkcji)

    Otwórz .plik edmx (w GUI designer).
  1. Kliknij prawym przyciskiem myszy w jakiejś otwartej przestrzeni i wybierz "zaktualizuj Model z bazy danych".
  2. Kliknij przycisk Zakończ (gdy będzie w stanie) w wyskakującym oknie. Podpis twojego SPROCA powinien zostać zaktualizowany(wraz z importem funkcji).

Aktualizacja złożonego typu procedury składowanej

  1. Otwórz okno " Model Browser ", gdy masz .edmx otwarty.

  2. Rozwiń zawartość , EntityContainer: ..., a następnie Funkcja importuje węzły. Poszukaj funkcji import dla Twojej procedury składowanej i Kliknij dwukrotnie to. Otworzy się to samo okno, którego użyłeś do jego utworzenia, ale teraz wypełnione jego danymi.

  3. Kliknij przycisk Get Column Information (spójrz na siatkę pod przyciskiem, aby zobaczyć, co zostanie zmienione).

  4. Kliknij przycisk Update obok opcji "Complex".

  5. Kliknij OK , A Typ złożony dla zestawu wyników powinien zostać zaktualizowany.

 131
Author: DaveD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-04 14:59:19

Nie musisz edytować edmx / xml. DO THIS:

Kiedy wprowadzasz procedurę składowaną do EDMX (mówię o takiej, która zwraca zestaw wyników, ale będzie to podobny proces), tworzy się 3, a nie 1, elementy i to jest źródło problemu. (***drugim źródłem problemu jest to, że musisz jawnie zapisać po usunięciu obiektów, przed ponownym importem obiektów, w przeciwnym razie nowo zaimportowane obiekty zderzą się z tym, co nie zostało naprawdę usunięte (zapisując) z edmx.

Więc! Do this:

W przeglądarce modeli, zazwyczaj po lewej stronie, wklej nazwę procedury przechowywanej w polu wyszukiwania, kliknij enter (lub Szukaj). Wyląduje na pierwszej instancji-prawdopodobnie samej procedurze składowanej. Kliknij prawym przyciskiem myszy i usuń. Teraz Umieść kursor z powrotem w polu wyszukiwania - > naciśnij enter lub szukaj ponownie. Teraz wylądujesz na import funkcji. Kliknij prawym przyciskiem myszy i usuń. Zrób to samo po raz trzeci - to wyląduje na typie złożonym reprezentującym wynik gotowi. Usuń to. Teraz nie skończyłeś!!!!!. Musisz zapisać to, co właśnie zrobiłeś, aby skasowania były zapisywane (niepisane) w edmx.

Teraz przejdź do procedury składowanej ponownie(zaktualizowany model / wybierz zapisany proc). TERAZ PONOWNIE KLIKNIJ ZAPISZ.

To zadziała za każdym razem. Kluczem jest upewnienie się, że podczas korzystania z przeglądarki modelu przeszukujesz wszystkie instancje nazwy procedury składowanej pojawiające się w przeglądarce modelu, dlatego lepiej nie martwić się o domyślną konwencje nazewnictwa. Drugim kluczem jest zapisanie po wykonaniu dowolnego kroku.

 13
Author: jamescnectnet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-10 15:27:24

Jeśli chcesz zmienić typy danych kolumn w resultset --> na początku stor proc dodaj set fmtonly off

Następnie użyj Przeglądarka modeli -- > Import funkcji -- > Edycja Proc -- > Pobierz przycisk informacji o kolumnie -- > przycisk aktualizacji

Tak to robi Neil:)

 6
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 19:17:03

Zajęło to dużo ręcznej edycji na XML i kilka restartów Visual Studio, ale w końcu udało mi się zapomnieć o poprzednim podpisie. Potem po prostu użyłem normalnego kreatora EF, aby dodać go z powrotem i działało dobrze.

 1
Author: Jeff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-14 20:52:18

Jeśli zmienisz podpis zapisanego proc, będziesz musiał zaktualizować dowolny złożony typ utworzony w modelu za pomocą funkcji import.

 1
Author: kram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-26 02:16:14

Musisz usunąć i dodać procedury przechowywane z powrotem, ponieważ struktura encji musi wygenerować nową definicję dla Twojej procedury. Domyślam się, że musisz ponownie zaimportować funkcję.

Zasadniczo jeśli zmieniłeś logikę procedury, a nie Typ zwrotu lub podpis, nie musisz go dodawać ponownie. To będzie działać dobrze, ale jeśli zmienisz Typ powrotu lub podpis ef musi wygenerować i mapować go do nowej definicji, która jest w sposób, w jaki działa.

 0
Author: Vishal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-14 17:37:51

Miał podobny problem w EF4, gdzie nie ma opcji odświeżania poszczególnych sps, ma to zrobić po kliknięciu Odśwież w kreatorze aktualizacji, ale nie działa niezawodnie. Musiałem w przeglądarce modelu usunąć złożone typy dla wartości zwrotnych, a także import funkcji. Następnie przejdź do pliku edmx z edytorem XML i usuń odniesienie do zapisanego proc (nie można znaleźć sposobu na to w przeglądarce modelu). Następnie ponownie dodać sps.

 0
Author: Rob Sedgwick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-13 10:14:56

Można również usunąć wszystkie dowody SP w następujących miejscach, pliki te można znaleźć w przeglądarce modelu po otwarciu .plik edmx:

  • YourModel > Typy Złożone;
  • YourModel > Import Funkcji;
  • Twoja Modelka.Store > Procedury / Funkcje Przechowywane.

Po usunięciu można go dodać z powrotem bez żadnych problemów.

 0
Author: Terkhos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 13:08:36