2013-02-20 16 views
6

Pierwotnie miałem pierwszy zestaw kodu EF, który łączył się z istniejącą bazą danych. To działało dobrze.Kod EF Najpierw - tworzenie bazy danych - Logowanie nie powiodło się dla użytkownika

Potem wprowadziłem kilka zmian do POCO i zdecydowałem, że najpierw wygeneruję kod dla mnie.

Błąd pobierania: Nie można otworzyć bazy danych \ "MyDatabase \" żądanej przez login. Logowanie nie powiodło się. \ R \ nZgłoszenie nie powiodło się dla użytkownika "DOMAIN \ nazwa_użytkownika".

Usunąłem starą bazę danych, ale nie zmienić ciąg połączenia:

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

Mam instancji SQL Server 2008 na moim komputerze lokalnym, a moja nazwa domeny jest w „sysadmin” roli.

Próbowałem różnych inicjalizatorów bazy danych i otrzymuję ten sam błąd dla wszystkich. Występuje błąd podczas pierwszego wywołania zapytania, ale najpierw kod nie tworzy bazy danych. Mogę wskazać ciąg połączenia z kopią starej bazy danych (przed zmianami) i będzie działał dobrze, z tym wyjątkiem, że jest to mój stary schemat, mimo że określiłem inicjator DropCreateDatabaseAlways. To nie ma sensu, a nie podążanie za tym, co przeżyłem na moim komputerze domowym, pracując najpierw z kodem.

Korzystanie z Visual Studio 2012 i EF5.

Potrzebuję mieć możliwość wygenerowania kodu w pierwszej kolejności. Co się dzieje?

Odpowiedz

8

Okazało się, że miałem konstruktor statyczny w mojej klasie DbContext, który nadpisał inicjalizator bazy danych.

static MyDbContext() 
     { 
      Database.SetInitializer<MyDbContext>(null); 
     } 

Kod pierwszy inżynier rewersu umieści to w ten sposób, aby nie zastąpić istniejącej bazy danych. Kiedy się przełączyłem, nie myślałem o tym.

Mam nadzieję, że to pomoże komuś innemu.

Powiązane problemy