安装我的代码第一次点击一次应用程序时出现"Cannot attach the file as database"错误



我正在构建一个WPF应用程序,使用EF Code First。

应用程序似乎工作良好,而调试,但当我发布和安装它,使用ClickOnce,我得到这个错误:

Cannot attach the file [path & filename] as database

我试过:

  • 使用VS Server Explorer

    检查我的连接字符串

    (无法将文件附加为数据库/底层提供程序在打开时失败)

  • 更改连接字符串中DB的名称

  • 从连接字符串中删除AttachDbFilename等标签

  • 使用sqlcmd注销数据库(http://www.eidias.com/Blog/2013/1/7/error-connecting-to-localdb-after-mdf-and-ldf-files-are-deleted)

  • 删除localdb实例(http://arabic2000.com/blog/index.php/2013/11/localdb-attach-problem-in-visual-studio-2013/)

  • 使用VS' SQL Server Object Explorer删除数据库

  • 简单地省略连接字符串,但然后我得到一个不同的错误:

    {"Expansion of |DataDirectory| failed while processing the connection string. 
    Ensure that |DataDirectory| is set to a valid fully-qualified path."}
    

    (然而,在我的代码中没有提到|DataDirectory|,除了注释掉的连接字符串)

  • 使用DropCreateDatabaseIfModelChanges,甚至DropCreateDatabaseAlways代替CreateDatabaseIfNotExists

在我的家用电脑上,我不得不将应用程序设置为不查找更新,因为我没有网络来放置安装文件夹。当我在这里发布,安装和运行应用程序时,我没有得到任何错误-但所有的应用程序似乎都是在后台运行,直到我杀死它的进程。UI不显示


更新:

同时,我已经删除了数据库使用SQL Server管理工作室,这似乎有一些帮助。

  • 如果我不使用连接字符串,我得到|DataDirectory|错误:Expansion of |DataDirectory| failed while processing the connection string. Ensure that |DataDirectory| is set to a valid fully-qualified path.

  • 如果我随后在调试模式下运行应用程序(这使得EF创建DB),然后运行(或重新安装)应用程序,我得到这个错误:no process at the other end of the pipe

  • 如果我随后删除DB(在上述步骤中调试运行期间创建)使用SQL Server Management Studio,并再次运行安装的应用程序,再次得到|DataDirectory|错误。

  • 即使我使用连接字符串,指定绝对路径,我得到|DataDirectory|错误。

  • 如果我随后在调试模式下运行应用程序(这使得EF创建DB),然后运行(或重新安装)应用程序,我再次得到Cannot Attach the file as database错误。

  • 如果我随后删除DB(在上述步骤中调试运行期间创建)使用SQL Server Management Studio,并再次运行安装的应用程序,再次得到|DataDirectory|错误。


更新2:

  • 我让应用程序在我的家庭电脑上工作。只需要……不要使用快捷键ClickOnce添加到开始菜单,而是运行。exe本身。

    ClickOnce在安装开始后仍然没有显示任何通知,并且在安装完成后仍然无法启动应用。

  • 我不知道这个"修复"是否会在工作中工作,直到星期二才能尝试它-但我会让你张贴。我确实在那里简单地尝试了一下,并得到了这个错误:Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies…但我很可能使用了一个过期的。exe副本,因为我很赶时间。


更新这个答案:i've found a fix:

我的问题似乎是由错误的连接字符串引起的:

<add name="4.Data.DienstreisDBContext" connectionString="Data Source=(LocalDb)v11.0" providerName="System.Data.SqlClient" />

故障在name标签中。它应该简单地说,"DienstreisDBContext"(从而省略了我存储DBContext类的文件夹的名称)。


我已经找到了一个工作:

如果我忽略安装过程中的错误,并使用。exe而不是开始菜单快捷方式ClickOnce生成,我的应用程序似乎运行良好。

遗憾的是,这意味着更新我的应用程序不会像ClickOnce那样容易。

相关内容

  • 没有找到相关文章

最新更新