Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create LocalDB for testing from Visual Studio SQL project

I'm trying to create an integration tests for my project. I need to test a controller that makes call to stored procedure through repository. An empty database should be created on each runs of certain scope of tests. So I'm going to implement the following steps:

  1. Create LocalDB
  2. Run some Pre-scripts(to add test data)
  3. Run test
  4. Run some Post-scripts (if needed to run other test on this database)
  5. Remove LocalDB

In my solution I have .sqlproj with all tables and SPs. How can I create LocalDB with the same structure as in .sqlproj from C# code? Or how can I generate the script with all objects to run it on LocalDB?

In bin folder of .sqlproj exists MyProjectName_Create.sql but it doesn't run in cmd.ExecuteNonQuery();

Any help/suggestion will be appreciated. Thanks

P.S. Related question is How to disable predeployment and postdeployment scripts in DacServices.Deploy()

like image 307
Pr.Dumbledor Avatar asked Mar 22 '17 21:03

Pr.Dumbledor


People also ask

How do I create a SQL connection code in Visual Studio?

In Visual Studio Code, press Ctrl+Shift+P (or F1) to open the Command Palette. Select MS SQL:Connect and choose Enter. Select Create Connection Profile. Follow the prompts to specify the new profile's connection properties.


1 Answers

In the build folder of your sqlproj you can also find [DBName].dacpac file. You can use sqlpackage.exe to deploy the dacpac to your localdb. Ben Day explains in this blog pretty nicely. You can find sqlpackage.exe in your sql server installation folder if it is not directly available from the command line.

SqlPackage /Action:Publish 
   /SourceFile:”Benday.SampleApp.Database.dacpac”
   /TargetDatabaseName:BendaySampleAppDb 
   /TargetServerName:”demo2012util”
like image 190
theSushil Avatar answered Oct 12 '22 12:10

theSushil