C# 使用DB文件在Azure Devops上运行测试
有没有办法使用以下任务之一在Azure Devops管道上创建DB文件 我的思路是使用VS在代理上创建一个localdb,并像使用VS一样在该DB文件上运行单元测试SSDT。我可以创建DB文件工具>连接DB>Sql server DB文件并输入名称。我可以连接到它并运行测试。似乎我不能在Azure devops管道上这样做 我知道首选的方法是分配一个Azure SQL server并对其运行测试,但DB非常小,如果我可以对DB文件运行这些测试,这似乎是一个更好的主意 使用DB文件在Azure Devops上运行测试 作为解决方法,您可以尝试签入LocalDb文件mdf和ldf,将文件复制到输出,并更改连接字符串以使用当前执行路径: 您可以查看文档以了解一些详细信息 希望这有帮助 使用DB文件在Azure Devops上运行测试 作为解决方法,您可以尝试签入LocalDb文件mdf和ldf,将文件复制到输出,并更改连接字符串以使用当前执行路径: 您可以查看文档以了解一些详细信息C# 使用DB文件在Azure Devops上运行测试,c#,unit-testing,azure-devops,azure-pipelines,sql-server-data-tools,C#,Unit Testing,Azure Devops,Azure Pipelines,Sql Server Data Tools,有没有办法使用以下任务之一在Azure Devops管道上创建DB文件 我的思路是使用VS在代理上创建一个localdb,并像使用VS一样在该DB文件上运行单元测试SSDT。我可以创建DB文件工具>连接DB>Sql server DB文件并输入名称。我可以连接到它并运行测试。似乎我不能在Azure devops管道上这样做 我知道首选的方法是分配一个Azure SQL server并对其运行测试,但DB非常小,如果我可以对DB文件运行这些测试,这似乎是一个更好的主意 使用DB文件在Azure D
希望这能有所帮助。基本上我找到了一种在代理上完成这一切的方法。但是,如果使用较新的语法,则必须更新代理localdb
- task: CopyFiles@2
inputs:
Contents: '**/Output/*.dacpac'
flattenFolders: true
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
sqllocaldb start MSSQLLocalDB
sqllocaldb info MSSQLLocalDB
#import SqlServer module
Import-Module -Name "SqlServer"
# create variable with SQL to execute
$sql = "
CREATE DATABASE [MyDatabase]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'MyDatabase', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase.mdf' , SIZE = 1048576KB , FILEGROWTH = 262144KB )
LOG ON
( NAME = N'MyDatabase_log', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase_log.ldf' , SIZE = 524288KB , FILEGROWTH = 131072KB )
GO
USE [master]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER AUTHORIZATION ON DATABASE::[MyDatabase] TO [sa]
GO "
Invoke-SqlCmd -ServerInstance "(localdb)\MSSQLLocalDB" -database master -Query $sql
- task: SqlDacpacDeploymentOnMachineGroup@0
inputs:
TaskType: 'dacpac'
DacpacFile: '$(Build.ArtifactStagingDirectory)/*.dacpac'
TargetMethod: 'connectionString'
ConnectionString: 'Data Source=(localdb)\.;Initial Catalog=MyDatabase;Integrated Security=True;'
有了它,您可以将生成的已创建的.mdf文件附加到localdb,并将dacpac发布到其中。然后,如果您想运行测试,您可以这样做。基本上,我找到了一种在代理上完成所有测试的方法。但是,如果使用较新的语法,则必须更新代理localdb
- task: CopyFiles@2
inputs:
Contents: '**/Output/*.dacpac'
flattenFolders: true
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
sqllocaldb start MSSQLLocalDB
sqllocaldb info MSSQLLocalDB
#import SqlServer module
Import-Module -Name "SqlServer"
# create variable with SQL to execute
$sql = "
CREATE DATABASE [MyDatabase]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'MyDatabase', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase.mdf' , SIZE = 1048576KB , FILEGROWTH = 262144KB )
LOG ON
( NAME = N'MyDatabase_log', FILENAME = N'd:\a\1\s\testing.Data\test\bin\Output\MyDatabase_log.ldf' , SIZE = 524288KB , FILEGROWTH = 131072KB )
GO
USE [master]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER AUTHORIZATION ON DATABASE::[MyDatabase] TO [sa]
GO "
Invoke-SqlCmd -ServerInstance "(localdb)\MSSQLLocalDB" -database master -Query $sql
- task: SqlDacpacDeploymentOnMachineGroup@0
inputs:
TaskType: 'dacpac'
DacpacFile: '$(Build.ArtifactStagingDirectory)/*.dacpac'
TargetMethod: 'connectionString'
ConnectionString: 'Data Source=(localdb)\.;Initial Catalog=MyDatabase;Integrated Security=True;'
有了它,您可以将生成的已创建的.mdf文件附加到localdb,并将dacpac发布到其中。然后,如果您想运行测试,您可以这样做。或者您使用inmemory db进行测试?我不希望在azure上创建一个采用定价层的人。因此,我想在代理上创建一个db文件,这样我就可以在它上运行测试,因为它很小。或者有理由不这样做吗?Inmemory数据库就是在内存中创建的,顾名思义。例如,这是实体框架中的一项功能:或者您使用inmemory db进行测试?我不希望在azure上创建一个采用定价层的人。因此,我想在代理上创建一个db文件,这样我就可以在它上运行测试,因为它很小。或者有理由不这样做吗?Inmemory数据库就是在内存中创建的,顾名思义。这是实体框架中的一个特性,例如:谢谢,这很有帮助。我在托管代理上找到了一种方法,我会在这里回复谢谢,这很有帮助。我在托管代理上找到了一种方法,我会在这里回复的,太好了!谢谢你在这里分享你的解决方案,你可以,它可以帮助其他社区成员谁得到同样的问题,我们可以存档这个线程,谢谢。太好了!谢谢你在这里分享你的解决方案,你可以,这样它可以帮助其他社区成员谁得到同样的问题,我们可以存档这个线程,谢谢。