Przemysław Pyra

Przemysław Pyra Student, Wyższa
Szkoła Informatyki i
Zarządzania w
Rzeszowie

Temat: Aplikacja wpf - problem z bazą danych

Witam serdecznie
Zwracam się z prośbą o pomoc, ponieważ napotkałem problem, z którym nie mogę sobie poradzić. Mianowicie projektuje aplikacje w języku c# w technologi wpf. Do aplikacji dodałem lokalną bazę danych *.sdf. Łączę się prawidłowo. Mogę wykonywać zapytania jednak, gdy zapiszę coś do bazy i wyłączę aplikacje po czym uruchomię ją ponownie dane, które zapisałem poprzednio przepadają. Tak wyglądają ustawienia bazy danych.

Obrazek

Uprzejmie proszę o pomoc
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: Aplikacja wpf - problem z bazą danych

Czy używasz transakcji? Jest sygnalizowany jakiś błąd podczas zapisu danych do bazy? Jeśli tak to sprawdź uprawnienia użytkownika (tego, którego używa twoja aplikacja) do tabel na których wykonujesz operacje zapisu. Jeśli nie, to sprawdź obsługę transakcji - wygląda, że brak operacji "commit" do zatwierdzenia transakcji. Jeśli nie używasz transakcji to sprawdź ustawienia sterownika do bazy (i połączenia ) - sprawdź, czy masz ustawioną opcję "auto-commit".

Pozdrawiam.

BTW: możesz jeszcze sprawdzić, czy nie masz gdzieś operacji "rollback" (wycofania transakcji), może jest w jakimś "try-catch"u, a nie jest sygnalizowane wystąpienie wyjątku na bazie, tylko automatycznie wycofywana transakcja.Ten post został edytowany przez Autora dnia 20.03.16 o godzinie 13:36
Grzegorz Kot

Grzegorz Kot Programista .NET

Temat: Aplikacja wpf - problem z bazą danych

1. Sprawdź czy przy normalnych uruchamianiu aplikacji (tzn. nie z Visual studio w trybie debuggowania) ale przez execa też występuje ten problem. Prawdopodobnie copy if newer nie działa tak jak powinien i po uruchomieniu z Visual Studio baza zawsze jest kopiowana i przykrywa ci ją.
2. Utrzymujesz połączenie do bazy przez cały cykl życia aplikacji czy tylko w momentach wykonywania zapytania - zobacz więc transakcje bazodanowe
3. Jeśli coś się nie zapisuje, a nie wyrzuca ci błędu i wszystko co powyżej (1, 2) nie pasuje, to widocznie nie wyłapujesz jakiegoś wyjątku.

Pozdrawiam - ale dla testu zrób "do not copy" albo przetestuj zachowanie bez Visual Studio.
Przemysław Pyra

Przemysław Pyra Student, Wyższa
Szkoła Informatyki i
Zarządzania w
Rzeszowie

Temat: Aplikacja wpf - problem z bazą danych

Serdecznie dziękuję za pomoc. Sprawdziłem wszystkie opcje i nigdzie nie wyrzuca wyjątku. Okazało się, że podczas uruchomienia aplikacji z execa wszystko działa prawidłowo.
Marek Kubiś

Marek Kubiś programista c#

Temat: Aplikacja wpf - problem z bazą danych

Nie przedstawiłeś jak odwołujesz się do bazy ale jeżeli dane są zapisywane, wszystko jest ok, a po ponownym uruchomieniu wszystko wraca do punktu wyjścia to znaczy, że najprawdopodobniej baza jest nadpisywana. Jeżeli odwołujesz się do kontekstu to przyczyna może być w sposobie twojego odwoływania się do bazy. Takie ustawienie jak poniżej wymusi opisywane zachowanie aplikacji:
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());

W warunkach "typowych" najrozsądniej przywracać bazę w przypadku modyfikacji modelu z DropCreateDatabaseIfModelChanges. Można jeszcze tak CreateDatabaseIfNotExists ale Twoja informacja, że to WPF to za mało aby domyśleć się Twojego problemu.

Następna dyskusja:

WPF, MVVM i EF - Databindin...




Wyślij zaproszenie do