Ошибка System.Data.DataException в EntityFramework.dll

asp.net-mvc-5 entity-framework-6 localdb sql-server-express visual-studio-2013

Вопрос

Я слежу за этим руководством. Начало работы с Entity Framework 6 Code Сначала с использованием MVC 5 .

Когда я попал в раздел, где мне нужно запустить программу, и нажмите «Студент», чтобы программа создавала базу данных, я получаю следующую ошибку.

введите описание изображения здесь

Исключение System.Data.DataException не было обработано кодом пользователя HResult = -2146233087 Сообщение = Произошло исключение при инициализации базы данных. Подробнее см. В InnerException. Source = EntityFramework StackTrace: at System.Data.Entity.Internal.InternalContext.PerformInitializationAction (действие) в System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () в System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c ) в System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1 действие) в System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () at System.Data.Entity.Internal.InternalContext.Initialize () в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (тип entityType) в System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet 1.GetEnumerator () в System.Data.Entity.Infrastructure.DbQuery 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() at System.Collections.Generic.List 1 .. ctor ( 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable источник 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1) в ContosoUniversityFollow.Controllers.StudentController.Index () в c: \ Users \ Office \ Documents \ Visual Studio 2013 \ Projects \ ContosoUniversityFollow \ ContosoUniversityFollow \ Controllers \ StudentController.cs: строка 21 в lambda_method (Closure, ControllerBase, Object []) в System.Web.Mvc.ActionMethodDispatcher.Execute (контроллер ControllerBase, параметры Object []) в System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) в System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod () в System.Web.Mvc.Async.AsyncControllerActionInvoker.b__36 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.End () в System.Web.Mvc.Async.AsyncResultWrapper.End [TResult] (IAsyncResult asyncResult, тег объекта) в System.Web.Mvc.Async. AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3c () в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters. <> C__DisplayClass45.b__3e () InnerException: System.Data.Entity .Core.EntityException HResult = -2146233087 Сообщение = Основной провайдер не работает в Open. Source = EntityFramework StackTrace: at System.Data.Entity.Core.EntityClient.EntityConnection.Open () в System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection () в 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. <> c__DisplayClassb.b__9 () в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy. Выполнить [TResult] ( 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery Func 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults (Nullable 1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery 1..GetEnumerator> b__0 () at System.Lazy 1.CreateValue() at System.Lazy 1.LazyInitValue () в System.Lazy 1.get_Value() at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext () в System.Linq.Enumerable.FirstOrDefault [ TSource] ( 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable IEnumerable 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable последовательность 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable 1) в System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle [TResult] ( 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 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 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) в 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) в System.Data.Entity.Internal.InternalContext. <> 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 повторных попыток, DbConnectionOptions userOptions, DbConnectionInternal & соединение) 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 retry, DbConnection Параметры userOptions) в System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry) в 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 retry 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 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) в System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute (операция действия) в System.Data.Entity.Core.EntityClient.EntityConnection.Open () InnerException:

Мне трудно решить проблему. Я слежу за всем и даже переделываю его, чтобы убедиться, что все правильно. Я не думаю, что упускаю какие-то шаги. Но что-то не так. Если я запускаю весь образец кода, все работает нормально.

Любая помощь приветствуется.

Благодаря,

Pheap

РЕДАКТИРОВАТЬ:

Это было очень неприятно для простой вещи, которая привела к ошибке, подобной этой. @mmeasor, я просто видел эту ошибку. Он не может подключиться к базе данных. Поэтому, чтобы проверить соединение.

Случилось так, что сначала я использовал эту строку подключения: введите описание изображения здесь

Итак, EntityFramework создала файл базы данных ContosoUniversity1.mdf здесь, например C: \ Users \ Office \ ContosoUniversity1.mdf. Но потом я хочу, чтобы он создал еще один и использовал это вместо этого, и на этот раз я хочу, чтобы он был в папке App_Data \.

Поэтому я изменил файл web.config на: введите описание изображения здесь

Я думал, что если я это сделаю, EF создаст для меня новую базу данных в папке \ App_Data \ и свяжется с ней вместо старой в C: \ Users \ Office.

Я был так неправ! это было, когда я начал получать сообщение об ошибке выше. И я не могу найти причину проблемы.

Со вторым web.config я попытался скопировать файл базы данных в папку App_Data, но это все еще не работает.

Теперь я использую первую строку подключения, и она работает нормально.

Итак, теперь возникает вопрос: как сделать ссылку программы на файл базы данных в папке \ App_Data \?

Благодаря,

Pheap

Популярные ответы

У меня была та же проблема, когда я пытался изменить местоположение учебной базы данных Университета Костосто из папки пользователя в папку App_Data. Джон Локк натолкнул меня на мысль, что это может иметь какое-то отношение к необходимости менять имя базы данных.

Измените имя немного базы данных, указанной в файле web.config (это работает непоследовательно, но работает последовательно непоследовательно. Если бы мне пришлось снова это проверить ... и я уверен, что в какой-то момент ... Я бы держался подальше от повторного использования имен - т. е. не переключаться между двумя предпочтениями имени (например, database1 и database2 обратно в базу данных1 - я бы использовал совершенно новые имена, например databse7 ... database8 ... database9 - получить имя от ранее использованных имен)

Мне также повезло, как только база данных была создана с именем, которое я не хотел, изменив имя базы данных на то, что я хотел, и сопоставив это имя в web.config (т.е. я смог создать «database3.mdf» «файл успешно, а затем изменил его в ОС на то, что я хотел -« database1.mdf », и сопоставил файл web.config с базой данных1 и подключался с первой попытки)




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему