我有一个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, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1重试,DbConnectionOptions userOptions)at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 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.InternalDispatcher1.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()
答案 0 :(得分:0)
它正在尝试从App_Data文件夹加载文件TradeManagerDB。您需要使用不同的语法从其他地方加载它。