Jesteś pewien, że wykonałeś ten wygenerowany skrypt? Otwórz go w Visual Studio, kliknij w jego obrębie ppm i wybierz Execute SQL. Ja przeprowadziłem u siebie mini test (baza danych składająca się z jednej tabeli) i niby wszystko jest OK (EF 4.3.1 i SQL Server Compact 3.5 SP2).
BTW dlaczego zdecydowałeś się na podejście model-first? Był za tym jakiś konkretny argument? IMO wygodniejszym rozwiązaniem jest najpierw utworzenie bazy danych, a dopiero później wygenerowanie modelu na podstawie tej już istniejącej bazy danych.
Wykonuje generowanie, pojawia mi się skrpyt: Model1.edmx.sqlce
W nim są komendy DDL ale nie mam żadnej opcji Excute…
Mam tylko: Run to Cursor - ale nic nie daje. W bazie nie ma żadnych zmian.
Zdecydowałem się na Model-First bo w designerze tworzę sobie bazę od podstaw. Potem mam gotowe skrypty do wdrożenia. Jak zrobię jakieś malutkie zmiany, to nanoszę sobie szybko je w designerze, robię znowu “generate…” i mam gotową bazę. Zadecydowała wygoda. Bazę i tak trzeba zaprojektować bo sama się nie stworzy - a w tym podejściu mogę to elegancko zrobić i szybko poprawić w razie potrzeby. Co dziwne na SQL Express i SQL Standard mój model EDMX wykonuje się bez problemów i wszystko jest dobrze… Sam już nie wiem co jest nie tak…
Jak widzisz na tej liście nie ma SSMS 2012 Express. To nie pomyłka. Microsoft z jakiegoś powodu usunął obsługę SQL Server Compact z poziomu tego programu. Musisz użyć SSMS 2008 R2 Express lub innego programu z tej listy.
Co najśmieszniejsze, z poziomu Database Explorer mogę wykonywać zapytania na bazie SQL Compact ale tylko jednego typu: muszę wybrać rodzaj (SELECT/INSERT/DROP) i otwiera się okienko do pisania skryptów SQL. Tego DDLa nie ma tam jak wykonać zupełnie…
W SSMS 2012 Express nie ma obsługi Compact bo nie ma już takiej bazy danych. SQL Server 2012 zamiast Compact posiada nową odmianę LocalDB - podejrzewam że dlatego usunięto SQLCompact.
– Dodane 09.07.2012 (Pn) 19:24 –
Skorzystałem z SSMS 2008 R2 Express. Wykonałem skrypty ręcznie i zaczęło działać. Ale… SQL Compact w połączeniu z Entity nie obsługuje wielu podstawowych funkcji …
Zainstalowałem sobie SQL 2008 R2 Express. Sama baza działa elegancko. Problem jest w tym że nie mogę podłączyć bazy do modelu Entity. Bo Visual Studio C# Express nie obsługuje Native Clienta SQL Servera do połączenia… Visual Web Developer Express w pełni obsługuje SQL Native Client - mogę się spokojnie podłączyć do bazy express którą mam na kompie i wszystko działa. W wersji C# jest tylko “Microsoft SQL Server Database File (SqlClient)”. Mogę się tym podłączyć do pliku z bazą (wchodzę do katalogu DATA samej bazy danych), ale udało mi się to tylko raz. Teraz dostaję komunikat, że plik jest wykorzystywany przez inny proces - co jest prawdą bo przecież SQL Server z niego korzysta…
Kiepsko to wygląda. Model moge wygenerować ale nie podłącze się do bazy bo C# Express obsługuje tylko dostęp “plikowy” do bazy. Dziwi mnie bardzo że Visual Web Developer ma pełny dostęp przy użyciu SQL Native Clienta a C# Express już nie…
Miał ktoś podobną sytuację? Wie ktoś jak “ominąć” tę niedogodność?
Wow, błyskawicznie wzrosły Ci wymagania … z SQL Server Compact na SQL Server. Tylko, żeby się nie okazało, że do programu, która ma kilkaset linijek kodu, będzie trzeba instalować takiego kolosa
Jeśli chodzi o bazy danych, które charakteryzują się małymi wymaganiami, to możesz się jeszcze przyjrzeć SQLite. Być może ta baza danych będzie miała to czego brakowało Ci w SQL Server Compact. Na stronie projektu możesz zapoznać się z możliwościami tej bazy danych http://www.sqlite.org/about.html (warto to zrobić zanim zacznie się z niej korzystać, bo ma ona również sporo ograniczeń).
Dziękuję bardzo ;), przekopiowanie ustawień ServerExplorera z Web Dev Studio do Vis Std C# pomogło;) Wygodnie może nie jest ale da się normalnie pracować z entity:)
Co do wymagań;) Mój program w tej chwili ma już ponad 3k linijek kodu (sam C#, XAMLa nie liczę;)), a nie skończony jest jeszcze system logowania zdarzeń, backup do Azure i pare innych dodatków;) Wydaje mi się, że wybór bazy jest dobry - chciałem korzystać z SQL Compact bo ma powiedzmy “mniejsze wymagania systemowe” Ale miało to być rozwiązanie chwilowe (póki odbiorca mojego programu nie zmodernizuje sprzętu) i docelowo korzystał będę i tak z SQL Express - dlatego chciałem skorzystać z Entity bo potem łatwo przenieść wszystko na inną bazę, bez potrzeby klepania czegoś ręcznie;)
Dziękuję wszystkim za pomoc;)
– Dodane 10.07.2012 (Wt) 13:04 –
Przy okazji jeszcze (może się komuś przydać):
Jest możliwość skorzystania w sposób normalny z bazy SQL Express w Visual Studio C# Express:
Logujemy się do SSMS.
Znajdujemy pożądaną bazę.
ppm -> Tasks -> Take Offline
Podłączamy się do tej bazy przy pomocy VS C# Express tym connectorem plikowym
(bazy są w katalogu: C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA)
Minus tego rozwiązania jest taki że jak chcemy zarządzać bazą w SSMS musimy ponownie ją podłączyć: ppm -> Tasks -> Bring Online i wtedy Visual Studio już nam odmówi posłuszeństwa - jeśli będziemy to chcieli robić na raz;)
– Dodane 10.07.2012 (Wt) 16:38 –
Dlaczego dziwne? I Visual Web Developer i Visual C# to są wersje Express Edition - instalowane nawet z jednego ISO (jak się pobiera pełny pakiet Express). Dziwne jest czemu wersja dla aplikacji webowych ma obsługę SQL Native Client a dla aplikacji desktopowych już nie… Obie są za darmo, na identycznej licencji. Dziwna sprawa.