System.Data.DataException Fehler in EntityFramework.dll aufgetreten

9

Ich habe dieses Tutorial verfolgt Erste Schritte mit Entity Framework 6 Code Zuerst MVC 5 verwenden .

Als ich zu dem Abschnitt kam, wo ich das Programm ausführen muss und auf Student klicke, damit das Programm eine Datenbank erstellen würde, erhalte ich den folgenden Fehler.

  

System.Data.DataException wurde von Benutzercode nicht behandelt     HResult = -2146233087     Nachricht = Beim Initialisieren der Datenbank ist eine Ausnahme aufgetreten. Weitere Informationen finden Sie in der InnerException.     Quelle = EntityFramework     StackTrace:          bei System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Aktionsaktion)          bei System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization ()          bei System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c)          bei System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1 Aktion)          bei System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase ()          bei System.Data.Entity.Internal.InternalContext.Initialize ()          bei System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Typ entityType)          bei System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet 1.GetEnumerator ()          bei System.Data.Entity.Infrastructure.DbQuery 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() at System.Collections.Generic.List 1..ctor (IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 Quelle)          in ContosoUniversityFollow.Controllers.StudentController.Index () in C: \ Benutzer \ Office \ Dokumente \ Visual Studio 2013 \ Projekte \ ContosoUniversityFollow \ ContosoUniversityFollow \ Controllers \ StudentController.cs: Zeile 21          bei lambda_method (Closure, ControllerBase, Objekt [])          bei System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase-Controller, Object [] -Parameter)          bei System.Web.Mvc.ReflectedActionDescriptor.Execute (Parameter ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2)          bei System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod ()          bei System.Web.Mvc.Async.AsyncControllerActionInvoker.b__36 (IAsyncResult asyncResult, ActionInvocation innerInvokeState)          bei System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.End ()          bei System.Web.Mvc.Async.AsyncResultWrapper.End [TResult] (IAsyncResult asyncResult, Objekttag)          bei System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult)          bei System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3c ()          at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters. & lt; & gt; c__DisplayClass45.b__3e ()     InnerException: System.Data.Entity.Core.EntityException          HResult = -2146233087          Nachricht = Der zugrunde liegende Provider ist beim Öffnen fehlgeschlagen.          Quelle = EntityFramework          StackTrace:               bei System.Data.Entity.Core.EntityClient.EntityConnection.Open ()               bei System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection ()               bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction [T] (Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery 1. & lt; & gt; c__DisplayClassb.b__9 ()               bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult] (Func 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults (Nullable 1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery 1..GetEnumerator & gt; b__0 ()               bei System.Lazy 1.CreateValue() at System.Lazy 1.LazyInitValue ()               bei System.Lazy 1.get_Value() at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext ()               bei System.Linq.Enumerable.FirstOrDefault [TSource] (IEnumerable 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable 1 Sequenz)               bei System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle [TResult] (IEnumerable 1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable 1 Quelle)               bei System.Data.Entity.Internal.EdmMetadataRepository.QueryForModelHash (Func 2 createContext) at System.Data.Entity.Internal.InternalContext.QueryForModelHash() at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata) at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.DropCreateDatabaseIfModelChanges 1.InitializeDatabase (TContext-Kontext)               at System.Data.Entity.Internal.InternalContext. & lt; & ndash; c__DisplayClasse 1.<CreateInitializationAction>b__d() at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 Message=Cannot open database "ContosoUniversity1" requested by the login. The login failed. Login failed for user 'Office-PC\Office'. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=11 LineNumber=65536 Number=4060 Procedure="" Server=(LocalDb)\v11.0 State=1 StackTrace: at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1 Wiederholung, DbConnectionOptions userOptions, DbConnectionInternal & amp; Verbindung)                    bei System.Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 Wiederholung, DbConnectionOptions userOptions)                    bei System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry)                    bei System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func 1 Operation)                    bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute (Aktionsoperation)                    bei System.Data.Entity.Core.EntityClient.EntityConnection.Open ()               InnerException:

Ich habe Mühe, das Problem zu beheben. Ich folge alles und wiederhole es sogar, um sicherzugehen, dass ich es richtig verstanden habe. Ich glaube nicht, dass ich irgendwelche Schritte verpasse. Aber da stimmt etwas nicht.Wenn ich den gesamten Beispielcode ausführe, funktioniert alles einwandfrei.

Jede Hilfe wird geschätzt.

Danke,

Pheap

BEARBEITEN:

Es war wirklich frustrierend für eine einfache Sache, die zu einem Fehler wie diesem führte. @mmeasor, ich habe gerade diesen Fehler auch gesehen. Es kann keine Verbindung zur Datenbank hergestellt werden. Das führte mich dazu, die Verbindung zu überprüfen.

Was passierte, war, dass ich zuerst diese Verbindungszeichenfolge verwendet habe:

So hat EntityFramework hier eine Datenbankdatei ContosoUniversity1.mdf wie C: \ Users \ Office \ ContosoUniversity1.mdf erstellt. Aber dann möchte ich, dass es eine andere erstellt und stattdessen verwendet, und dieses Mal möchte ich, dass es stattdessen im Programmordner App_Data \ ist.

Also habe ich die Datei web.config wie folgt geändert:

Ich dachte, wenn ich das tue, erstellt EF eine neue Datenbank für mich im Ordner \ App_Data \ und verlinkt diese statt der alten in C: \ Users \ Office.

Ich habe mich so geirrt! Das war der Zeitpunkt, an dem ich den oben genannten Fehler bekomme. Und ich kann nicht finden, was das Problem verursacht.

Mit der zweiten web.config habe ich versucht, die Datenbankdatei in den App_Data-Ordner zu kopieren, aber das funktioniert immer noch nicht.

Jetzt verwende ich die erste Verbindungszeichenfolge und es funktioniert gut.

Die Frage lautet nun: Wie wird das Programm stattdessen mit der Datenbankdatei im Ordner \ App_Data \ verbunden?

Danke,

Pheap

    
Pheap 21.03.2014, 20:17
quelle

2 Antworten

2

Ich hatte das gleiche Problem beim Versuch, den Speicherort der Conosto University-Lernprogrammdatenbank vom Benutzerordner in den App_Data-Ordner zu ändern. John Locke hat mich auf die Idee gebracht, dass es etwas damit zu tun haben könnte, den Namen der Datenbank zu ändern.

Ändere den Namen der Datenbank, die in der Datei web.config angegeben ist (Dies funktioniert inkonsistent, funktioniert aber immer inkonsistent. Wenn ich das nochmal testen müsste ... und ich bin mir sicher, dass ich irgendwann ... I würde von der Wiederverwendung von Namen wegbleiben - dh nicht zwischen zwei Namenspräferenzen hin- und herschalten (zB database1 und database2 zurück zu database1) - Ich würde komplett neue Namen verwenden, zB datenbank7 ... datenbank8 ... datenbank9 - nenne den Namen von vorher verwendete Namen)

Ich hatte auch Glück, sobald eine Datenbank mit dem Namen erstellt wurde, den ich nicht wollte, den Datenbanknamen zu dem änderte, was ich wollte und den Namen in web.config passierte (dh ich konnte einen " database3.mdf "Datei erfolgreich und änderte es dann im Betriebssystem zu dem, was ich wollte -" database1.mdf "und stimmte die Datei web.config mit Datenbank1 überein und es wurde beim ersten Versuch verbunden)

    
3v3rhart 10.06.2014 14:10
quelle
-1

Hier ist EmployeeDetail ein Tabellenname und Employee ist ein Modellname. Und  ID, Branch, Gehalt und UID sind Tabellenfelder:

%Vor%
  

Seitencode anzeigen

%Vor%     
Satyendra negi 11.05.2016 10:59
quelle