1

我正在使用 DbUp 迁移我的 SQL Server 数据库。我已经在一个控制台应用程序中实现了这个,它接受连接字符串。如果我对我的本地 SQL Server 数据库运行它,它就可以工作。如果我针对 Azure SQL 数据库运行它,它也可以工作。

但是,如果我针对在测试中动态创建的 LocalDb 数据库运行它,则会出现异常。

发生异常的行是:

 EnsureDatabase.For.SqlDatabase(connectionString);

连接字符串参数包含:

 Data Source=(LocalDB)\MSSQLLocalDB;AttachDBFileName=C:\Projects\Prim\mgp\Prim.Mgp.Infrastructure.DataAccessTests\bin\Debug\netcoreapp2.2\Data\ccf243baa63eb4ea258b0155.mdf;Initial Catalog=ccf243baa63eb4ea258b0155;Integrated Security=True;MultipleActiveResultSets=True;

例外是:

System.Data.SqlClient.SqlException: '数据库'C:\Users\ludwigs\AppData\Local\Microsoft\Microsoft SQL Server 本地 DB\Instances\MSSQLLocalDB\master.mdf' 已经存在。选择不同的数据库名称。无法将文件“C:\Projects\Prim\mgp\Prim.Mgp.Infrastructure.DataAccessTests\bin\Debug\netcoreapp2.2\Data\ccf243baa63eb4ea258b0155.mdf”附加为数据库“master”。

...这有点奇怪,因为它提到的数据库与我在连接字符串中指定的不同。

有谁知道我可能做错了什么?

PS:如果我删除了麻烦的代码行,我可以毫无问题地查询我的数据库。

4

1 回答 1

0

连接字符串中的 AttachDBFileName 有问题,尝试使用此连接字符串进行测试。DBUp 运行 master 以便它可以使用 Ensure Database.For.Sql 数据库创建数据库,

<connectionStrings>
 <add name="Database" connectionString="Server=.;Database=Migrations_DbUp;Integrated Security=true"/>
</connectionStrings>
于 2020-02-10T02:10:30.267 回答