sureDatabase.For.SqlDatabase引发异常

时间:2019-02-01 13:06:35

标签: c# sql-server localdb dbup

我正在使用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:如果我删除了麻烦的代码行,则可以毫无问题地查询数据库。

1 个答案:

答案 0 :(得分:0)

连接字符串中的AttachDBFileName出现问题,请尝试使用此连接字符串进行测试。 然后DBUp运行主数据库,以便它可以使用确保数据库.For.Sql数据库

创建数据库。
<connectionStrings>
 <add name="Database" connectionString="Server=.;Database=Migrations_DbUp;Integrated Security=true"/>
</connectionStrings>