指定的LocalDB实例不存在

时间:2015-12-08 15:03:28

标签: c# entity-framework sql-server-2012 localdb

我正在尝试使用EntityFramework 6在SQL Server 2015 Express中构建ASP.NET MVC 5 Web应用程序但是当我调试应用程序并转到需要数据库的页面时,我收到以下错误。

  

System.Data.SqlClient.SqlException未被用户代码处理    错误码= -2146232060    的HResult = -2146232060    LineNumber上= 0    Message = Error relacionado con la redoespecíficodela instancia mientras se>establecíaunaconexiónconel servidor SQL Server。没有encontróelservidor>oéstenoestablisheda accessible。 Compruebe que el nombre de la instancia es correcto> y que SQLServerestáconfiguradopara admitir conexiones remotas。 (提供商:> SQL网络接口,错误:50 - Se produjo un error de local Database> Runtime.La instancia de LocalDB especificada no existe。)

此错误提到存在远程连接问题,但这不可能,因为我在本地。 然后我收到以下错误:发生localDB实例本地数据库运行时错误。指定的LocalDB实例不存在。

堆栈跟踪:

    en System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling)
       en System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
       en System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
       en System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
       en System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
       en System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
       en System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
       en System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
       en System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       en System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       en System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
       en System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
       en System.Data.SqlClient.SqlConnection.Open()
       en System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c)
       en System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
       en System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext)
       en System.Data.Entity.SqlServer.SqlProviderServices.<>c__DisplayClass33.<UsingConnection>b__32()
       en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
       en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
       en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
       en System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action`1 act)
       en System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act)
       en System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable`1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript)
       en System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
       en System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
       en System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase()
       en System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection)
       en System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
       en System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
       en System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext)
       en System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState)
       en System.Data.Entity.Database.Create(DatabaseExistenceState existenceState)
       en System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context)
       en System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf`1.<CreateInitializationAction>b__e()
       en System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
       en System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
       en System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
       en System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
       en System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
       en System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
       en System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
       en System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
       en System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()
       en System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
       en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       en WebApplication10.Controllers.AlbumsController.Index() en C:\Users\Develop2\Documents\Visual Studio 2015\Projects\WebApplication10\WebApplication10\Controllers\AlbumsController.cs:línea 20
       en lambda_method(Closure , ControllerBase , Object[] )
       en System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       en System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       en System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
       en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
       en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
       en System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
       en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
       en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()

修改
我的连接字符串看起来像:

 <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication10-20151208105118.mdf;Initial Catalog=aspnet-WebApplication10-20151208105118;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="WebApplication10Context" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=WebApplication10Context-20151208105514; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|WebApplication10Context-20151208105514.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

编辑2

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="v11.0" />  
    </parameters>
     </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

应该是什么问题?

正如Cigano Morrison所说,问题是localDB的实例丢失了所以我不得不在命令行中运行以下命令sqllocaldb c MSSQLLocalDB 11.0

3 个答案:

答案 0 :(得分:1)

首先,检查您的项目是否在aspnet-WebApplication10-20151208105118.mdf文件夹中包含WebApplication10Context-20151208105514.mdfApp_Data文件(通常,它们不属于解决方案。

其次,尝试将(LocalDb)\MSSQLLocalDB替换为(LocalDb)\v11.0

第三,第二个连接字符串中缺少反斜杠:

<add name="WebApplication10Context" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=WebApplication10Context-20151208105514; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|\WebApplication10Context-20151208105514.mdf" providerName="System.Data.SqlClient" />

第四,检查是否安装了具有高级功能的SQL Server,其中包括LocalDB。

要创建新的数据库文件,请右键单击App_Data文件夹&gt;添加&gt;新项目......

New SQL

答案 1 :(得分:0)

如果您使用的是LocalDB,您实际上可以使用Microsoft的命令行工具来查看您的实例,它们的终点并根据需要启动和停止实例。您还可以使用SQL Server管理工作室连接到Visual Studio外部的LocalDB实例,以便在更适合SQL操作的环境中工作。我在我的博客文章http://www.nikgupta.net/2015/12/connect-localdb-from-management-studio/

中详细介绍了这一切

答案 2 :(得分:0)

只需使用此cmd命令创建实例

sqllocaldb create "MSSQLLocalDB"

或默认情况下sqllocaldb带有一个实例,该实例是sqlserver版本的v11或v12,如果要使用它,只需将(localdb)\MSSQLLocalDB替换为(localdb)\v11