LocalDb的代码优先迁移和DataDirectory

本文关键字:迁移 DataDirectory 代码 LocalDb | 更新日期: 2023-09-27 18:29:59

看起来"更新数据库"命令使用默认项目的目录作为AppDomain,而不是启动项目的目录。

我有一个单独的类库项目,它包含了与数据库访问相关的所有内容,包括模型和迁移,我们称之为project.Data。该项目的一个单元测试要求我在LocalDb上运行它。因此,我在单元测试的app.config.中创建了一个连接字符串

Data Source=(LocalDb)'MSSQLLocalDB;AttachDbFilename=|DataDirectory|'MyDb.mdf;Initial Catalog=MyDb;Integrated Security=True

但是当我运行命令"更新数据库"时,DataDirectory的值为null。在这里,使用AppDomain的工作目录有点不可靠。

当模型和迁移相关的代码在一个单独的类库中时,当我运行"更新数据库"时,我如何使用单元测试的工作目录?

LocalDb的代码优先迁移和DataDirectory

我认为在执行更新数据库命令时必须使用ProjectNameStartUpProjectName参数。


请参阅此处了解更多详细信息:更新数据库命令参考

Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] 
  [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] 
  -ConnectionString <String> -ConnectionProviderName <String> 
  [-AppDomainBaseDirectory <String>] [<CommonParameters>]