Entity Framework 4 i SQL Compact 4: Jak wygenerować bazę danych?

Rozwijam aplikację z Entity Framework 4 i SQL Compact 4, używając pierwszego podejścia modelowego. Stworzyłem EDM, a teraz chcę wygenerować bazę danych SQL Compact 4.0, która będzie działać jako magazyn danych dla modelu. Wywołuję kreator Generuj bazę danych i klikam przycisk nowe połączenie , aby utworzyć połączenie dla wygenerowanego pliku. Pojawi się okno dialogowe Wybierz źródło danych , ale SQL Compact 4.0 nie jest wymieniony na liście dostępnych danych źródła:

Tutaj wpisz opis obrazka

Uruchamiam VS 2010 SP1 (beta) i zainstalowałem narzędzia VS 2010 dla SQL Compact 4.0. Mogę utworzyć połączenie danych SQL Compact 4.0 z Eksploratora serwera. Tylko w Kreatorze Generuj bazę danych opcja 4.0 nie pojawia się. BTW, moja instalacja SQL Compact 4.0 zawiera System.Data.SqlServerCe.Entity.dll. Więc powinienem mieć Komponenty SQL Compact, których potrzebuję.

Czy robię coś nieprawidłowo, czy to błąd? Czy ktoś ma FIXA lub obejście? Dzięki za pomoc.
Author: David Veeneman, 2011-03-05

7 answers

Jako obejście używam Kreatora generowania bazy danych do wygenerowania skryptu SQL Compact 3.5, który uruchamiam przeciwko pustej bazie danych SQL Compact 4.0 utworzonej w Eksploratorze rozwiązań VS 2010. Oto kroki do wykonania tego zadania:

Krok 1: Uruchom kreator Generuj bazę danych . Monituje o utworzenie pliku na pierwszej stronie, więc niech utworzy plik SQL Compact 3.5. Ten plik jest atrapą, więc nie ma znaczenia, jak się nazwiesz to.

Krok 2: Ukończ kreator, aby utworzyć skrypt DDL, który skonfiguruje nową bazę danych.

Krok 3: Usuń plik atrapy utworzony w Kroku 1.

Krok 4: Użyj VS 2010 Server Explorer, aby utworzyć rzeczywisty plik SQL Compact 4.0, który będzie używany w projekcie.

Krok 5: Kreator generowania bazy danych umieszcza dwa odniesienia do SQL Compact "3.5" w pliku EDMX; te odniesienia należy zmienić na "4.0". Otwórz plik EDMX w edytorze XML VS 2010 (kliknij prawym przyciskiem myszy i wybierz "Otwórz za pomocą", aby przejść do edytora XML). Linia 7 powinna zawierać odniesienia "3.5". Zmień je na " 4.0 " i zapisz plik.

Krok 6: Otwórz wygenerowany EDMX.Plik skryptu SQLCE W VS 2010. VS wskaże (za pomocą banera na bottonie panelu pracy), że skrypt jest odłączony. Kliknij prawym przyciskiem myszy białą spację nad banerem i wybierz Connection > Connect w menu kontekstowym, które się pojawi. Spowoduje to wyświetlenie okna dialogowego połączenia-użyj go do podłączenia skryptu do bazy danych SQL Compact 4.0 utworzonej w kroku 4.

Krok 7: Ponownie kliknij prawym przyciskiem myszy w skrypt white-space i wybierz Execute SQL z menu kontekstowego. Skrypt zostanie uruchomiony, a w okienku pod skryptem pojawi się zwykły komunikat o wynikach. Zakładając pomyślne wykonanie, baza danych jest następnie skonfigurowana tak, aby pasowała do modelu danych jednostki.

Krok 8: musimy również zapewnić aplikacja.config / web.config nie wskazuje na atrapy pliku. Jeśli jest to zmień go na rzeczywisty plik CE 4.0 utworzony w kroku 4 powyżej. W przeciwnym razie mamy problem z regeneracją skryptu podczas dokonywania zmian w modelu. W pliku konfiguracyjnym Zmień również 3.5 NA 4.0.

W tym momencie powinieneś być w stanie korzystać z Entity Framework 4 do pracy z bazą danych.

 34
Author: David Veeneman,
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-06-25 06:25:13

Aby odpowiedzieć na poniższe komentarze i odnieść się do nich zgodnie z: http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/microsoft-sql-server-compact-4-0-is-available-for-download.aspx

Ci czarodzieje nie działają.

Projektanci w projektach VB lub C# Windows w Visual Studio 2010 SP1 Beta: poniższe kreatory nie działają z Compact 4.0 w systemie projektów Windows. Programiści mogą ręcznie dodać odniesienie do ADO.NET dostawca dla Compact 4.0 (System.Data.SqlServerCe) do tworzenia programów dla Compact 4.0 w projektach Windows:

  1. Kreator konfiguracji źródła danych, który służy do konfigurowania zestawów danych.
  2. Kreator konfiguracji danych Configure, który służy do konfigurowania synchronizacji danych i schematu z serwerem SQL przy użyciu Sync FX.
  3. Kreator modelu danych encji, który służy do generowania encji ze zwartej bazy danych.

Oto zaakceptowana praca dla tych problemy. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

 2
Author: Dimentox,
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-03-06 00:41:10

Jak rozumiem obecna wersja VS 2010 nie ma wsparcia dla SQL CE 4.0. Powinno być zawarte w VS 2010 SP1 (obecnie w wersji Beta). Sprawdź ten wpis na blogu który opisuje również użycie modelu EF z SQL CE 4.0 W SP1.

Edit:

Znalazłem to obejście .

 1
Author: Ladislav Mrnka,
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-03-06 09:55:11

Możesz użyć IDatabaseInitializer i utworzyć bazę danych w kodzie za pomocą

if (File.Exists("Test.sdf"))
    File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = <password>";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();

SqlCeConnection conn = null;

try {
    conn = new SqlCeConnection(connStr);
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)";
    cmd.ExecuteNonQuery();

catch {
finally {
    conn.Close();

Http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v=vs. 80).aspx

 1
Author: Roland,
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-12-19 18:51:36

Jeszcze raz, użyj Narzędzia bazy danych WebMatrix.

Microsoft WebMatrix

 0
Author: takepara,
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-03-05 23:20:26

Mogę uruchomić Kreator generowania bazy danych bez żadnego problemu z mojego Chinook.Data project, upewnij się, że masz odpowiedni ciąg połączenia w aplikacji.config. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=C:\projects\Chinook\Chinook40.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
 0
Author: ErikEJ,
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-03-06 17:35:53

Prawdopodobnie potrzebujesz SQL Server Compact 4 tools również zainstalowany, jeśli nie zainstalowano go bezpośrednio, gdy Visual Studio 2010 SP1 został zainstalowany, możesz go zainstalować. To mi pomogło, gdy miałem problem.

 0
Author: melutovich,
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
2012-09-12 23:06:47