Ciągle otrzymuję nieprawidłową nazwę obiektu, gdy najpierw próbuję użyć kodu struktury encji w odniesieniu do bazy danych Azure. Jest to projekt MVC 3, w którym stworzyłem Model, a następnie Kontrolery przy użyciu EF i nowego kontekstu. Oto lista kroków, które podjąłem, aby go rozwiązać. Mam nadzieję, że przeoczyłem coś oczywistego.

  1. Pobierz VS 2010 SP1
  2. Pobierz EF 4.1
  3. skonfiguruj wyjątek zapory na platformie Azure dla mojego zewnętrznego adresu IP.
  4. ustaw parametry połączenia wyświetlane na platformie Azure w moim Web.config
  5. Wyłącz mój firewall, aby to wykluczyć.

Wygląda na to, że strona indeksu próbuje wycofać wyniki, ale rozwiązanie nie tworzy bazy danych tak, jak powinno, więc nie ma bazy danych i podczas wykonywania definicji polecenia wystąpił błąd. Ktokolwiek?

3
Jesse 10 sierpień 2011, 22:45
1
Czy wypróbowałeś swój kod z lokalną bazą danych? Zmień parametry połączenia na lokalną bazę danych i sprawdź, czy baza danych została utworzona. Jeśli nie jest tworzony, wiesz, że błąd znajduje się w kodzie EF.
 – 
Kevin Cloet
11 sierpień 2011, 13:38

2 odpowiedzi

Najlepsza odpowiedź

Odkryliśmy, że ważne jest, aby baza danych SQL Azure jeszcze nie istniała. Kod EF najpierw zakończy się niepowodzeniem, nawet jeśli mamy całkowicie pustą bazę danych.

Spróbuj pozwolić EF utworzyć bazę danych całkowicie od podstaw.

5
Andy Milligan 11 sierpień 2011, 23:22
Tak, kiedy w końcu to rozgryzłem, byłem jak Doh! Dziękuję
 – 
Jesse
23 sierpień 2011, 18:59
Czy kiedykolwiek zorientowałeś się, DLACZEGO to nie może istnieć? Z powodu pewnych ograniczeń w SQL Azure? To ma być obsługiwany scenariusz, przynajmniej poza platformą Azure, prawda?
 – 
MEMark
22 lipiec 2013, 17:48

Jest kilka rzeczy, których możesz spróbować. Aby upewnić się, że możesz utworzyć bazę danych, najwyraźniej Twój login wymaga dostępu do głównej bazy danych, a PersistSecurityInfo musi mieć wartość True w ciągu połączenia:

(na dole) http://social.msdn.microsoft .com/Forum/pl/adonetefx/thread/1e828c99-66a9-4094-87ec-e799bd619463

Po drugie, musisz powiedzieć aplikacji, aby utworzyła bazę danych, jeśli jeszcze nie istnieje. Wewnątrz metody Application_Start w Globals.asax.cs wypróbuj ten mały fragment:

using System.Data.Entity;
...
...
protected void Application_Start() {
   Database.SetInitializer<Models.FunContext>(new CreateDatabaseIfNotExists<Models.FunContext>());
}

Mam nadzieję, że to pomoże, szczęśliwego kodowania!

1
Justin Beckwith 11 sierpień 2011, 21:59