运行 update-database 导致错误:“发生文件激活错误”

Posted

技术标签:

【中文标题】运行 update-database 导致错误:“发生文件激活错误”【英文标题】:Running update-database results in the error: "A file activation error occurred" 【发布时间】:2015-01-09 12:09:21 【问题描述】:

基本上,我创建了一个包含数据访问存储库的类库项目,供其他项目使用。 我添加了 EF6 包并启​​用了迁移。 我在 app.config 中的连接字符串如下所示:

  <connectionStrings>
    <add name="Pbn" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Pbn.mdf;Initial Catalog=LM.DataAccess;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

(项目名称为LM.DataAccess)。

当我运行 update-database 命令时,出现以下错误:

发生文件激活错误。物理文件名“\Pbn.mdf” 可能不正确。诊断并纠正其他错误,然后重试 操作。创建数据库失败。列出的一些文件名可能 不会被创建。检查相关错误。

这可能是什么问题?

【问题讨论】:

相关问题 - ***.com/questions/18882560/… 【参考方案1】:

这就是问题所在:

AttachDbFilename=|DataDirectory|\Pbn.mdf

这被解释为 \Pbn.mdf,它不存在。这是因为您没有设置 |DataDirectory|值,所以它是空白的。设置方法见here。

【讨论】:

我明白了。但是我在哪里更改数据目录?我的意思是,与 Web 项目不同,我的类库中没有 global.asax 文件(我通常会在其中放置它)。 是的,但在控制台和 WinForm 应用程序中有一个 Program.cs。 WPF 有 App.xaml.cs,所以有适合每个人的东西! 是的,但我的是一个类库,两者都没有。我尝试添加 Program.cs,就像控制台应用程序一样,但它没有被解雇。顺便说一句 - 对不起我的延迟回答,但我正在尝试你所说的一切:) 你需要 a) 设置任何项目使用你的库 b) 在你第一次使用连接字符串之前的某个时间在你的库中设置它 c) 不要使用 |DataDirectory|!使用正确的路径!

以上是关于运行 update-database 导致错误:“发生文件激活错误”的主要内容,如果未能解决你的问题,请参考以下文章

Abp框架之执行Update-Database 命令系列错误

实体框架多对多关系错误

实体框架手动删除的表不能从EF迁移生成

切换分支时如何解决Update-Database问题?

无法将“Update-Database”项识别为 cmdlet函数脚本文件或可运行程序的名称的问题

如何更改Update-Database ef迁移的连接字符串?