5

Zespół, mam aplikację ASP.NET MVC, którą wdrażam. Kiedy go wdrażam, aplikacja działa dobrze, ale kiedy zadzwonię pod numer Membership.CreateUser, kończy się ona próbą utworzenia bazy danych, nawet jeśli już istnieje. Co muszę zrobić, aby go pobrać, aby nie próbował wywoływać CreateMembershipEntities, ponieważ baza danych już istnieje?Inicjalizacja bazy danych zatrzymania EF dla DefaultMembershipProvider

Próbowałem Database.SetInitializer do inicjatora, który nie robi nic, Próbowałem usunąć defaultConnectionFactory w Web.config - Obecnie jestem poza opcjami.

Oczekuję Twojej pomocy!

UPDATE

Właśnie dowiedziałem się wczoraj, że przyczyną tego, że stara się stworzyć bazę dlatego serwery gospodarze nie pozwalają na podłączenie do kwerendy sysdatabases a więc baza nigdy istnieje i stąd zawsze próbując go stworzyć. Wygląda na to, że być może będę musiał wrócić do starszego dostawcy ASPNet, a także odejść od pierwszego modelu kodu EF.

<rant> Na bardziej osobistą uwagę chciałem poinformować Microsoft, dziękuję za nic! Ten pierwszy model kodu działa dobrze z aplikacjami, które są wdrażane na serwerach, które posiadasz - ale umieszczaj je w chmurze (i tam gdzie wszystko idzie tak czy inaczej) i masz pecha. Świetna robota Microsoft! Dlaczego po prostu nie spróbować po prostu połączyć się z bazą danych, aby sprawdzić, czy istnieje?!? Jeśli połączenie się powiedzie, musi istnieć - w przeciwnym razie, chyba nie. </rant>

+0

"* Próbowałem DatabaseSetInitializer do inicjalizatora, który nie robi nic *": Normalnym sposobem wyłączenia inicjalizacji DB jest ustawienie inicjalizatora na 'null', czyli' Database.SetInitializer (null) '. Ale nie mam pojęcia, co to EF ma wspólnego z ASP.NET MembershipProvider, który używa procedury składowanej i własnych połączeń (chyba że jakoś dostosowałeś dostawcę). Byłbym zaskoczony, gdyby ustawienie inicjalizatora na 'null' rozwiązało problem. – Slauma

+0

@Slauma Problem, który mam, polega na tym, że próbuje utworzyć tabele członkostwa, gdy już istnieją w produkcyjnej bazie danych. Nie mam dostępu do DROP i CREATE bazy danych na serwerze produkcyjnym. Jeszcze jedną rzeczą wartą odnotowania jest to, że serwerem produkcyjnym jest GoDaddy, a dostawcą członkostwa, którego używam, jest DefaultMembershipProvider, który konfiguruje w nowej aplikacji ASP.NET MVC 4. Działa świetnie na moim polu rozwojowym. –

Odpowiedz

1

dać do obejrzenia tutaj: http://www.qualitydata.com/learn/web-config-membership-provider-settings To pokazuje sekcję konfiguracji członków web.config. Musisz napisać podobną sekcję i umieścić connectionStringName = "Twój ciąg połączenia". W ciągu połączenia określasz informacje z już istniejącej bazy danych.

+0

Dziękuję za odpowiedzi. Pozwól, że zadam ci krótkie pytanie. Niedawno dowiedziałem się - podobnie jak wczoraj po południu - że powodem tak dużego problemu jest to, że serwery hostów nie zezwalają na ciąg połączenia z zapytaniem 'sysdatabases'. A ponieważ używam kodu EF najpierw podejście domyślny dostawca członkostwa próbuje potwierdzić istnienie bazy danych. Czy powinienem po prostu wrócić do staroświeckiego dostawcy członkostwa AspNet? To nie jest tak czyste. –

+0

Rozwiązaniem problemu było użycie SqlMembershipProvider zamiast DefaultMembershipProvider. SqlMembershipProvider jest zgodny z interfejsami dostawcy członkostwa, ale działa tak jak kiedyś - nie próbuje utworzyć bazy danych, jeśli nie istnieje. Moja rada dla wszystkich to NIE używać najpierw kodu EF. –

+0

Link w tej odpowiedzi jest przestarzały ... bez niego Nie sądzę, że w odpowiedzi są jakieś użyteczne informacje? – ChrisW

Powiązane problemy