拥有MVC项目中实体框架代码第一个数据库.已将控制台项目添加到解决方案中,但无法连接到数据库



我有一个MVC项目,在该项目中,我使用实体框架代码优先的方法来创建数据库。数据库存在,我可以从我的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");

这行抛出一个异常,并显示消息:

无法附加文件"C:\Users\RED\documents\visual studio"2015\Projects\TradeManager\Console\bin\Debug\TradeManagerDB.mdf'作为数据库"TradeManagerDB"。

关于这个异常意味着什么以及如何解决它,有什么想法吗?

这是完整的堆栈跟踪:

系统数据ProviderBase。DbConnectionPool。TryGetConnection(DbConnectionowningObject,UInt32等待多个对象超时,布尔allowCreate,仅布尔OneCheckConnection,DbConnectionOptionsuserOptions,DbConnectionInternal&连接)系统数据ProviderBase。DbConnectionPool。TryGetConnection(DbConnectionowningObject,TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1重试,DbConnectionOptionsuserOptions,DbConnectionInternal oldConnection,DbConnectionInternal&连接)系统数据ProviderBase。DbConnectionInternal。TryOpenConnectionInternal(DbConnectionouterConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1重试,DbConnectionOptions userOptions)系统数据SqlClient。SqlConnection。TryOpenInner(任务完成源1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1重试)。数据SqlClient。SqlConnection。在打开()系统数据实体基础设施拦截。DbConnectionDispatcher.b_36(DbConnectiont、 DbConnectionInterceptionContext c)系统数据实体基础设施拦截。InternalDispatcher1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action2操作、TInterceptionContext interceptionContext,动作3 executing, Action3已执行)系统数据实体基础设施拦截。DbConnectionDispatcher。打开(DbConnection连接,DbInterceptionContext interceptionContext)系统数据实体果心EntityClient。EntityConnection.b_2()
位于系统数据实体SqlServer。默认SqlExecutionStrategy<>c_DisplayClass1.b_0()在系统数据实体SqlServer。默认SqlExecutionStrategy。执行[TResult](函数`1操作)系统数据实体SqlServer。默认SqlExecutionStrategy。执行(操作操作)系统数据实体果心EntityClient。EntityConnection。打开()

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

最新更新