我用C#和Microsoft SQL Server 2017编写了一个程序,它的工作没有任何问题...
但是当我想为此应用创建安装文件并创建数据库的Express实例时,连接字符串出现问题。
我将数据库文件复制到调试文件夹中,并更改了app.exe.config
连接字符串,但出现错误。
我的程序有5层和4个配置文件,其中多少个需要更改连接字符串部分?
我尝试使用此连接字符串而不是原始连接字符串,首先尝试在debug文件夹中查找配置文件及其提供错误,然后再次尝试所有配置文件及其make错误
<add name="AccountingDBEntities"
connectionString="metadata=res://*/AccountingModel.csdl|res://*/AccountingModel.ssdl|res://*/AccountingModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AccountingDB.MDF;integrated security=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
错误:
您的应用程序中发生了未处理的异常。如果单击“继续”,则应用程序将忽略此错误并尝试继续,如果单击“退出”,则应用程序将立即关闭。
一些细节:
有关调用的详细信息,请参阅此消息的末尾 即时(JIT)调试,而不是此对话框。
**************例外文本**************
System.Data.Entity.Core.EntityException:基础提供程序在打开时失败。 ---> System.Data.SqlClient.SqlException:无法打开物理文件“ E:\ Projects \ Programming Project \ C#\ Accounting1.0 \ UI \ bin \ Debug \ AccountingDB.MDF”。操作系统错误5:“ 5(访问被拒绝。)”。
尝试为文件E:\ Projects \ Programming Project \ C#\ Accounting1.0 \ UI \ bin \ Debug \ AccountingDB.MDF附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者该文件位于UNC共享上。
在System.Data.SqlClient.SqlInternalConnectionTds..ctor中的,SqlAuthenticationProviderManager sqlAuthProviderManager) 在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection,DbConnectionOptions userOptions) 在System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool池,DbConnection owningObject,DbConnectionOptions选项,DbConnectionPoolKey poolKey,DbConnectionOptions userOptions) 在System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,布尔值allowCreate,仅布尔值OneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&连接) 在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&连接)处 在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal处(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1重试,DbConnectionOptions userOptions) 在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) 执行System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action
2操作,执行TInterceptionContext拦截上下文,执行Action3 executing, Action
3) 在System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection连接,DbInterceptionContext拦截上下文) 在System.Data.Entity.Core.EntityClient.EntityConnection.b__2() 在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy。<> c__DisplayClass1.b__0() 在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult](Func1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.Core.EntityClient.EntityConnection.Open() --- End of inner exception stack trace --- at System.Data.Entity.Core.EntityClient.EntityConnection.Open() at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions) at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func
1函数,IDbExecutionStrategy执行策略,布尔值startLocalTransaction,布尔值releaseConnectionOnSuccess)处 在System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.<GetResults>b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func
1操作中) 在System.Data.Entity.Core.Objects.ObjectQuery1.GetResults(Nullable
1 forMergeOption处) 在System.Data.Entity.Core.Objects.ObjectQuery1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator
1.MoveNext()