VS 2010, Entity Framework - odświeżenie pojedynczej tabeli

0

Witam,

W skrócie chodzi o to, że mam model z wieloma tabelami. Designer visuala źle mapuje te tabele (głównie chodzi o nullable, rozpoznawanie kluczy i typów danych). Muszę więc edytować pliki ręcznie. Problem pojawia się gdy trzeba dodać do modelu nową tabelę. Po dodaniu nowej tabeli znowu wszystko mam rozwalone, bo odświeżane jest wszystko i to znowu błędnie.

Od razu zaznaczam, że po prostu - w tym przypadku designer działa źle, a jest to związane zapewne nie z samym designerem i visualem, tylko raczej z błędami w providerze do entity frameworka - bez poprawiania ręcznego się nie obejdzie.

Czy jest jakiś sposób na to, żeby dodanie nowej tabeli do modelu nie rozwalało mi wszystkiego co mam?

0

W tym designerze też sporo rzeczy można ustawić ręcznie za pomocą properties, próbowałeś? Zakładam, że gdybyś ustawił je tylko za ich pomocą to przy dodaniu nowej tabeli nic by się nie poknociło.

0

Podbijam Rev'a - w designerze i pliku modelu bazy możesz mapowanie bazy sobie zmienić, więc nie miej oporów tylko zmień poszczególne właściwości na takie jakie potrzebujesz.

0

Ustawienie w designerze nie wystarczy, bo wtedy generuje błędny kod .cs i projekt sie w ogóle nie kompiluje. Np, gdy zmienię typ danych dla kolumny tylko w designerze, to kompilator krzyknie, że "Specified mapping is not valid".

Problem jest w tym, że po prostu źle wykrył typy danych w bazie. Założył sobie np tinyint jako boolean. Jeśli w propertiesach dla danej kolumny ustawię poprawny typ, to i tak typ źródłowy do mapowania pozostanie boolean - muszę to dopiero ręcznie zmienić w kodzie generowanym przez designera, bo tego już się inaczej zmienić nie da - założył sobie że typ w bazie jest taki i koniec. Po ręcznej zmianie działa i pobiera wszystkie wartości z bazy tak jak trzeba, do czasu gdy zajdzie potrzeba dodania czegoś do modelu - wtedy wszystko się znowu rozwala i projekt przestaje się kompilować.

0

Takie operacje jak dodanie nowej tabeli zawsze będą odświeżać cały model. Jest to zrobione po to żeby mieć pewność że istniejący model zawsze odpowiada aktualnej bazie danych. Po prostu niejako przy okazji sprawdzane są także wszystkie pozostałe obiekty i to jest słuszne.

Jeśli edytujesz pliki auto generated to musisz liczyć się z tym że mogą być nadpisane. Czy nie takie właśnie ostrzeżenie jest na początku pliku w komentarzu?

Jeśli rzeczywiście koniecznie musisz edytować to ręcznie to masz pecha i tak jak słusznie przypuszczasz jest to błąd twojego providera bazy danych. Jaka to baza? Jeśli są dodtępne alternatywne providery to warto potestować może w ten sposób uda się zlikwidować problem. Lub używać bazy mssql w miarę możliwości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1