在MVC项目中有Entity Framework代码第一个数据库。向解决方案添加了控制台项目,但无法连接到数据库

时间:2017-01-02 20:09:01

标签: asp.net-mvc entity-framework

我有一个MVC项目,其中我使用Entity Framework代码第一种方法来创建我的数据库。数据库存在,我可以从我的MVC项目中查询它,没有任何问题。

现在,我在解决方案中添加了一个控制台项目。在这个控制台项目中,我添加了对我的MVC项目的引用,添加了Entity Framework NuGet包,并将web.config(在MVC项目中)的连接字符串添加到app.config(在控制台项目中)。

连接字符串是:

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

我验证了这是控制台应用程序中使用的连接字符串,其中包含以下调试代码:

System.Console.WriteLine("ConnectionString=" + db.Database.Connection.ConnectionString);

当我的控制台应用尝试查询数据库时:

var result = db.Trades.Where(c => c.Ticker == "AAPL");

该行抛出一条带有消息的异常:

  

无法附加文件&#39; C:\ Users \ RED \ documents \ visual studio   2015 \项目\阿里巴巴TM \控制台\ BIN \调试\ TradeManagerDB.mdf&#39;如   数据库&#39; TradeManagerDB&#39;。

关于此异常意味着什么以及如何解决它的任何想法?

这是完整的堆栈跟踪:

  

在   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(的DbConnection   owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean   allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions   userOptions,DbConnectionInternal&amp;连接)   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(的DbConnection   owningObject,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource 1重试,DbConnectionOptions   userOptions,DbConnectionInternal oldConnection,DbConnectionInternal&amp;   连接)   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(的DbConnection   outerConnection,DbConnectionFactory connectionFactory,   TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1重试,DbConnectionOptions userOptions)at   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource 1   重试)在System.Data.SqlClient.SqlConnection.Open()处   System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.b__36(的DbConnection   t,DbConnectionInterceptionContext c)at   System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action 2操作,TInterceptionContext interceptionContext,   行动3 executing, Action 3已执行)   System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(的DbConnection   connection,DbInterceptionContext interceptionContext)at   System.Data.Entity.Core.EntityClient.EntityConnection.b__2()
  在   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy&LT;&GT; c__DisplayClass1.b__0()   在   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult](Func`1   操作)   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(动作   操作)   System.Data.Entity.Core.EntityClient.EntityConnection.Open()

1 个答案:

答案 0 :(得分:0)

它正在尝试从App_Data文件夹加载文件TradeManagerDB。您需要使用不同的语法从其他地方加载它。