我正在使用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:如果我删除了麻烦的代码行,则可以毫无问题地查询数据库。
答案 0 :(得分:0)
连接字符串中的AttachDBFileName出现问题,请尝试使用此连接字符串进行测试。 然后DBUp运行主数据库,以便它可以使用确保数据库.For.Sql数据库
创建数据库。<connectionStrings>
<add name="Database" connectionString="Server=.;Database=Migrations_DbUp;Integrated Security=true"/>
</connectionStrings>