SQL Data Tools In C# - Database Creation, Management, and Deployment in Visual Studio

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
what if I told you that you could create a sequel database in Visual Studio manage it like any other project track it with source control to poi it to multiple environments and refactor like c-sharp code well in this video I'm going to show you how to do all of those tasks and more the best part is it's free and it comes baked into Visual Studio and no we aren't going to be using entity framework although this method is compatible with entity framework now before we get started if you're new to this channel my name is Tim quarry it's my goal to make learning c-sharp easier sometimes that comes in the form of free videos like this one other times it comes in the form of challenges to encourage you to push yourself those are released every Thursday here on this channel still other times if you want to see things put together all the way or into a larger project a course might be the right solution for you those are located at I am Tim quarry calm now down the description you'll see a set of links including the blog post link for this video where you can get the source code ok let's get started in visual studio today we're starting from scratch so let's go to file new project now normally we live under the visual c-sharp category and so I think you find for c-sharp or in this list but we're going to do today is we're going to collapse that down and look at the other categories in one of those categories is other languages drop that down and here is sequel server in here is sequel server database project okay now if you don't have this then probably what happened is when you installed Visual Studio you didn't select the database tools option so you can run installer again and just make sure you select those tools options when you install Visual Studio this does come built into Visual Studio I believe since 2013 or 2012 okay but it's been reading a lot and this right now is Visual Studio 2017 and so it's nice new things in here for this project so sequel server database project let's call this our sequel project you can name it whatever you want this does not dictate the name of your database so this is just a project name in Visual Studio now for the solution name I always like to call this solution something other than the project name so you don't get confused as to is it the solution or the project so let's call this the sequel database project demo okay that's the solution name and we'll hit OK and it's going to initialize this project type for us and it doesn't have a whole lot in it in fact it has pretty much nothing it so it starts off blank now we have two options here let's talk through first of all what this really is this project is going to represent the database that our applications go ahead talk to if we have an application you can just make this just a database project if you want now for this demo we won't have a win for map or a console app or MVC or something like that we could we could just add that in and make this sequel project be our our creation of a database itself we can point to that database but in this case we're doing just this project now the this project is for Microsoft sequel server it's not going to be for my sequel or another brand of seelix sequel Lite it's not any of those it's only for Microsoft sequel server what this will represent is the method of creating a database now if you already have a database don't worry you can still use your existing database and bring it into this project and start from here now I'm going to start this project off with a blank database but I will show you down the road in this video I will show you how to import a project into a new report database into a new project so let's open up the sequel server object Explorer go ahead and pin this now sequel server object Explorer is a bit different than what you might be used to you might be used to like the there's no that data tools I believe it's called other is the server Explorer this is different this is a sequel server object Explorer so it's a little bit different a little more fill featured so if you have this one open it's not me as good I would recommend opening up the sequel server object Explorer so in here we have two folders one is our sequel server connected to and we have two local DB projects now local DB is it's something that comes built into Visual Studio and it's essentially a sequel server when you don't want to actually spin up a real sequel server but it is a real sequel server but it's just on disk because there's no larger engine behind it so right now we have no database in this local DB we do have a few demo projects of mine in the other the the pride is v13 one so we'll use the local DB one for today now also we have this projects folder inside here we have sequel project notice that relates to sequel project over here inside here we have what you'd normally see in SSMS which is the list of tables views and all the rest however there's nothing in any of these things okay so there's no store procedures no views no tables so let's change that now there's a couple ways you can go about this we could right click on our project and say add and say new item we have the whole list of sequel items we could add so we can come down here at table some views and select a file table or index or just about anything in table probably the most simple one to add but instead we're going to do is we're going to right-click on our table like we would in sequel server manager studio and say add new table and so say okay what's a table name or call this table the person table know as it puts it over here in the person dot sequel file now I'm not a huge fan of putting it here now let's refresh this real quick there you go there's DB oh that person I'm not a big fan of putting it right in the root so we're gonna go ahead and and move that into a folder in just a minute but for now let's look at what it's done it's created a script called person SQL and have created fourth we have an editor here which is you know clickable editor kind change values here and it's a lot it created an ID for us and it says the primary key and that's it so the first thing I always do with primary Keys is I make them auto increment well I don't remember the sequel syntax for making that auto increment if I did I could type it down here in this T sequel window because whatever I type down here will be reflected up here however I don't remember the syntax so I can go over to properties in my properties they have identity specification he is identity so it's gonna identity increment and increment see which just means that that's going to start off at number one and every record that gets inserted it's gonna add the next number in the in a sequence that's the basic version of it so just doing that notice it's changed down here to T sequel so it says primary key identity and now it will auto increment that value I can hit save it also add a couple fields here let's add first name make it a and varchar' 50 is fine I'll leave it as allowed null it would I probably wouldn't put nulls in there that's okay last name and varchar' okay so now notice down here at T sequel it has updated if I were to change this first name to first names for whatever reason notice up here it changes as well so keeps in sync now again I'm not a big fan of where it put it they put it right here the person not sequel you put right underneath the project so let's right-click and add a new folder will call this fuller DB o for database owner and then under here we'll add a folder for tables and then let's move this into the right location okay just keeps things a little more clean and I can do the same thing adding more tables now if you import from an existing database it will create this structure for you so there is a benefit there if you go that route but you can create like this that problem you can leave it on the route if you wanted to but it's just not real clean so let's add another table so let's do this way right click and say add come down here a table and we'll call this table address and we'll make it again we'll go to properties oops properties and say that's the auto increment for ID and E and then we'll say that we're going to link this to the person table by a person ID or allowed nulls and let's say street address city State and no I'm not limiting these yeah if you were gonna limit these I'd say that you know zip code should probably be 10 I believe if I'm talking us addresses this wouldn't do addresses outside the US very well but state probably two for the two but we're just gonna leave it just as it is for now I'll hit save and now if I come over here to my project and i refresh this list notice that the address table is over here as well so now we have a couple of items we have person and address and I say you know I want to link this is a foreign key to the person table so that I know that this is a person ID well again I don't remember the syntax for it but not a problem i right-click on foreign keys say add new foreign key and we'll call this the address and then the underscore person hit enter and notice this is I love this lets unpin this for a minute I get red squigglies and this is something that you know we're used to a c-sharp but we're not still used to with sequel but this gives us intellisense as as hate that's a problem here on resolve reference that's because these columns don't exist so the column here is person ID references to the person table and the field is ID so you can't do everything in this editor but it's really easy to create stuff down here in the T sequel window especially if your use of T sequel but even if not the problems are pretty clear so it it makes it at least uneasier mode if not easy mode okay so now we have two tables and we have a foreign key relationship let's go ahead and bring out again our solution explorer and our object Explorer then there's no databases in the MS local dB now let's verify that again by hitting the refresh button just to show that that's still a case now if I right-click on my Siegel project and say publish we select a target so I'm going to select the little browse go to local and I will select the MS local DB which is that right here and I'll hit OK now there seems be a quark here I'm not quite sure why I think it had something to do with my particular version of Visual Studio but let me show you what's going to happen here to submit I'm gonna come back and hit edit again come back over here notice how it says windows authentication is one of the options down here but if I select local ms SQL local DB that goes away and now it's not an option in this list it's weird I'm not quite sure why and if I select one of these I can't go back and unselect it but what I want is Windows authentication so which is that trusted connection string so we'll leave it as it is but if you are getting to a a bind here you can go advanced and you can come up here and you look for integrated security and make sure that it's set to true and as long as had to true that's a trusted connection okay and there's actually the connection string right down here so if we have our or wind for map down below we could just copy this connection string and paste it into the app config or if it's a MVC project it be the web.config and then we can connect to this database now that's not connecting to the project it's a little different it's connecting to the database that we're gonna publish to so give it a database name now remember it's not this name you don't have name with this you could I'm gonna call it demo DB alright just to just be clear that this database name is not the same thing as a project name now I'm going to save this profile and it wants to say it in a weird location and I'm not sure well actually it's saving the incorrect location still so let's go to demos and we'll go to our project so I guess it was the right location it didn't the first time first time that summer to--you off but just make sure it's the right location for your project and hit save and I'm gonna rename this so I keep it as dot publish to XML but let's call this the local demo DB that way I'm clear as to what the published profile is for because you might publish to more than one database so I've saved it and now it shows up right here local demo DB published XML now I can hit publish and it's going to create my database for me so it's thinking about going to set it up the first time it's a little bit slow and I slow I mean a couple of seconds but if we now go up to our local DB and hit refresh there's demo DB inside band the tables you see address and person so it's create a new database for us just by publishing this these scripts now the one thing I'm going to do you know right-click and a create a folder so I add a new folder just kind of call it publish locations now I'll put that publish profile in there now if I ever want to come back and publish again which I will often just double click on here and hit publish we've got everything filled in for you so that's a nice little time-saver right there alright just to be clear on how is demo works I'm gonna add some records to my actual published database just to kind of show you how's it work in a real database so let's add Tim corey and John Smith and Sue Storm okay so there's three records numbered 1 2 & 3 these are the first three records that create now let's go over to the address table and also view the data and we're gonna say that Tim lives at 1 2 3 West Main in podunk Iowa and no clue what that ad that's if it is what we'll call it good and let's add one more and let's just say sue lives at 15 birch Street in Seattle Washington again just a made-up zip code okay so there's two records there so now we have some data in the table on our our published database again we don't store data down here so if you were at trying to right-click in an add data you can't because this is just a scripts to create the database see as the schema designed just to create or update our database it's not meant to hold data it's not a database this is the database we've published to alright now let's create a view so I'm gonna right click on D Bo and say add new folder I'll call it views I will right click add a view and let's call this view oh I don't know full person full people that's called full person now you know rework this just a bit so I'll clear it out and say select let's go a P dot star and a dot a dot star if you're not familiar with sequel syntax what I'm going to do is I'm going to rename the tables just in this view to BP and a to make it shorter I'll say from DB o dot notice the intellisense person I'll call that P and we'll say this is going to be a left join which a left join means that it's going to take all the records from the person table and where we have matches we're going to take it from the other table which is going to be the address table all right so and don't read the syntax too much it's this is if sequel if you you're familiar that great if you're not it's it's something can give a speed on as you need it so on yep left join on P dot ID equals a dot person ID so I'll link up on that foreign key relationship which is the person ID to the person ID now immediately get this error message and we hover over it and it says the model already has an element that has the same name person full person ID so it's got that twice and the reason why is because the person table if you remember has an ID column and so is the address table well how we solved that well first of I want to expand not a big family stars so here do something small or if you're sure you want the whole table maybe but if you want to be more specific or if you have a conflict like this then you need to expand to actually spell out which columns you want that I could tight those out manually or we can right-click refactor expand wildcards know as the same do you want expand the peanut star and we can uncheck that and just do a dot star or you can uncheck the a top star and just do peanut star we're can you both I notice the preview changes down here shows us what's gonna look like hit apply and now all of a sudden that's on pennies real quick now a sudden we've got this hit and still too long let's give it some space here we can see the problem we have two columns with ID now we could rename one as address ID and we can say as person ID all right that's a rename of a column the problem is we now have us conflict again so we can say well you can rename that one or we can just say you know what let's call this one let's remove this one we don't need a second a second time because this really is the same as this so therefore we remove it so we have our choice there but notice how the intellisense and the error handling worked it actually worked just like c-sharp they gave us an error it point out the problem at design time not when we try and run it so really great stuff now let's go ahead and hit save because it's a valid view now and just you know if you hit build that's a little differently going to do we can't hit build and it will build and what's gonna do is check to make sure there's no errors but there isn't right now so we'll wait on that so now we have us view and there's our full person not sequel view now let's do one more thing here I'm gonna right click on D Bo now I could do the programmability and our that star procedures I was gonna say stored procedures right here that's that's typically what I use is tables views store procedures out Nia dive into programmability because I don't use functions and rules that often so let's just leave it right here go right-click and say add stored procedure and we'll call this we'll call it SP don't call it SP underscore it's a that's a sequel no no but call it SP person filter by last name alright and we're going to pass in one parameter so I'll pass in last name say n VAR char 50 and then we'll say in here select I'll do a star again from DB o dot person where last name equals at last no it's intellisense really cool stuff here then right click here refactor expand wildcards hit apply so now we have the three columns from our person table so I it save so now I have a stored procedure I have a view I have two tables so let's go ahead and say you know what it's time to publish so we can go down to our publish locations double click on this and just say publish that's pretty quick if we go ahead and refresh the demo DB we can see that tables are still there but now we have a view and under store procedures we have a stored procedure as well and just to kind of prove that this doesn't destroy things right click on person view dia there's a records so it's not it's not saying oh I have this person table let's created again it's saying I already got it we're good therefore I don't need to touch it I don't need to wipe out the data so that's very important now I'm not going to show us video but I want to point out here that this is like any other visual studio project in that we can save this information in source control so where it is right now we could put in a source control and then any changes that happen would go in there as those source control differences the one thing it doesn't do that the migration tool to do so there's there's migration and then there's upgrade tools so this is an upgrade type path the migration tool we the one that has both the script to take you the next version and it also has a script to rollback this doesn't have the rollback script per se now you can create snapshots to rollback - and when I cover that in this video but just know that's available but it's not quite the same thing as the the rollback script of say an entity framework however it is much easier to work with this when you're talking about a team because it's just it's easier to to merge these things together when we have as one directional scripts alright so now if we come to the person table and we were looking at this and say you know what I don't like the fact that says ID I kind of want to say person ID okay now if I did this and I saved it look at the error list look at all the problems I cost B that was depending on that being called ID not person ID which is what you get when you're modifying a sequel database and SSMS only you don't get the error list you have to go manually find all these different areas let's undo that we don't want to do that but let's right click again on ID say refactor rename we want to call it let's call it person ID and preview changes is down here checked weight okay now it's preview box let's see if I can make it a little bigger there we go so it says okay the addresses table well in the addresses table as a constraint that is person ID this is well it looked like when we change it person dot person ID in the full person view we say P dot ID you'll say P dot person ID also the left join is on pita ID now the P dot person ID and so on so found all the different references to our person dot ID and change or a person ID but what it didn't do is it didn't change the address table where the address table has a column called ID so it's smart enough to know that it's not referencing the addresses ID column just the person's ID column so this refactor goes through your entire database and looks for the actual references not just name matches the actual references and says hey I can rename those and if you hit apply now if we look at our error list no errors and yet its person ID because if we go to the address table the foreign key if we look at that the foreign key references person person ID column and so on I mean the view references person ID and so forth so that right there is gold I mean just be able to rename something to have a cascade through your entire database safely and show you what it's doing is pretty important now I'm gonna push this in just a minute I'll make sure he's saved going to double click on the publish now I could say generate script now what this will do and let's just do that this doesn't actually run that this script so if we were a right-click and say view designer for this in our push to database it still says ID but what this does is this script if we look down here once it says use the database name all the Rastas stuff is about renaming so that's all the change we really did but this is all the the code they'll yet run because since we lasted an update okay so it's looking through it's renaming it person ID to person ID and all arrests the sequel code and then it says it's complete so I could give this script to my database administrative I wanted to if my DBA doesn't want to use Visual Studio and have it published that way we could have it create the sequel script and then his hand that off to whoever is doing it now I find it easier to just have it published automatically I hit publish it's done if we go to the person table and look at our columns it's now person ID the really cool thing is right-click view data it hasn't changed anything as far our data goes they just still there the column name has just changed so it tries to be very safe with your data and it tries not to just destroy data if they can help it now if I were delete the last name column that way destroyed it and I do believe it prompts me for that now what if you have lots closes out what if you have a database administrator that's also working on the database you're publishing to now in theory that shouldn't be the same database you are publishing to but let's say it is and that the administrator says you know what I am going to modify this view so we're going to view the code for this and let's just this is a sequel designer so we can just go ahead and change us to alter and instead of showing the person ID let's go ahead and do this way and we will whoops you guys say create it so we can update we update it's going to update that script update database now if we go over to our view over here once it's don't click on this oops there we go notice that column is still there because I didn't update my project I updated the database I'm pushing too so what happens then so that's a real world example because if you're working out a database maybe something else comes along opens up SSMS and makes a change of their own well there's a built-in tool to help you out if you right-click on a sequel project we can say schema compare and what a schema compare does is it compares two different databases so let's grab our target and our target is and it's the Browse go a local and then in here we'll select demo DB we hit connect we hit OK now what's gonna do is this is actually the wrong direction but let's go compare it for a minute so he'd compare and it says click on this and says you know what you have a column over here that's not over here and so it's gonna change the demo DB this database to reflect what's in our project that's now we want we will know the other direction fortunately these little arrows right here switch the source and target so the source is that external database that someone modify with sequel server manager to view and compare again now I click on this and it says well you've got this right here so I'm going to modify this row take out the if you can see there's dark red and there's light the light red is what leaves that's what goes out she's gonna take out person ID as person ID and it's going to start at first name so now we can do is we can actually just say update are you sure I'll update yes now that's gonna change this view now let's just don't click on this view and notice that the the ID column is gone it's the first name tail is all we have there now before you do anything else I'm gonna save this compared so again it puts in their weird location me this is a one dealing wasn't but oops demos inside seagull project and it's gonna see it right here I'm going to say local DB compare okay and now I do is I'm going to go to a project select the project itself and say show all files let's go down here and look for local DB compare and right click and say including project then uncheck the show all files button and now that compare is here so now I'm going to create one more folder at the root just say compares and drag that into the compares folder so now if I double click this it brings that comparison up again so if this is a regular occurrence where someone is modifying the database outside your controller outside this visual studio project then you can do these compares bring down their changes bring them into your project check them in a source control and you're all good again okay now right now if we to compare it should be there's no things to compare to the same now you don't run a in the other direction necessarily because you don't need to have that the other way because that's what this published us so the process here if you're to put this into a regular build process and source control in it and work on a team is that in the morning when you open up your project you do a git poll or whatever sort of control you use to bring the latest changes from the previous day or the night before and then you're gonna publish what you have to your local copy of the database yes probably you're working on as a local copy of a database and then you can start going back to your work either modifying your single project or your other code and keep you know committing your different changes and you commit your changes you push them up to the server so that everyone else can have access to your changes as well your coworker comes in they pull the nightly changes including your new changes they update their version of their local copy of demo DB and they keep working in committed changes and at some point you say you know what we want to push this to our development server and so whatever process you have it I really recommend you have an automated process if you're a team or have any size project is you would push that into your build pipeline and if you don't have a build pipeline I recommend looking at Azure DevOps it used to be called visual studio team services or VST s it's now called a dev dev ops but go there's a free account for small teams and you can create a build pipeline so we upload your source code or you say this is what I want to go a dev if automatic builds it compiles it it runs tests against it it publishes your database changes to your dev database and then it pushes your changes to whatever server you have or what or whatnot so all this now allows you to insert or add your sequel changes into your automated build process you don't need to worry about things like change scripts and making sure you have those and making sure if you you know do you remember to update that or not this takes care of all of that so make it really quick really easy to make those changes and to push them to your various servers because that same build process can then be used again for your staging environment and for your production environment so this right here takes database management to a whole new level I'd recommend even if you're just a sequel server developer and not even a c-sharp developer it still use this tool it's just so much better than just sequel server manuals to do even though we're kind of used to that tool now a couple things when I go over a foreword done first of all if you want to just kind of play around in this database for example if you wanted to you know do some little select statements whatever you can right-click and say new query and creates a query window just like you would see in sequel server managers of you so I can do things like select star from DB o dot person I love it intellisense by the way now f5 is not what you use in sequencer amanda's to vo f5 or it would run this instead it's ctrl shift e so it's a little bit different so ctrl shift E or that play button wrap here you run this there's your results and a messages as well so if three rows affected and there's those three rows you can also exit your store procedures so made my stored procedure and let's say last name Smith and execute that and there's John Smith back from our store procedure you even have things like execution plans so some great stuff in here that you can work with under the sequel menu which will pop up when you're in a sequel environment you have a lot of options and clean there's execution plans so there's our execution plan for this store procedure pretty simple but you have a lot of options in here for working with your sequel code so there's one you know that it's it really is that full-featured environment like you're used to with SSMS you can do pretty much everything you could do in SMS and even better pay forward done the coupling that I'll show you one was let's say I got rid of this demo DB for whatever reason it's not there if I want to do a publish let's just say you know it's gone I want to create a new debate database whatever just change the database name or the path to hit publish and notice what's gonna happen I just submit if I hit refresh demo db2 now the one thing that we're missing if you right-click in persons and say you did there's no data because we don't store the data in our Segal project but don't worry if you want to you can bring some data with you there's a couple things you can do first of all you could right click and say data comparison so that's the source is the one I selected select a database let's go to local and select demo db2 hit connect and now we can say next and to connect to those two databases and do a comparison let's just look at just the tables so you don't have a hat out of comparison views obviously and now it says you know what address means to add to and person needs to add three these are only in the source so if I were to hit generate scripted create a script for us work hit update target I do that and now if I were going to demo db2 right click on person and say view data now I have those three records so that's a quick way to get a new database up and running if you want make a copy or if you want to get your test environment going but maybe what you really want is you want to have a table that Leslie has options for example a day of the week table you probably hadn't retail but if you did you'd only have seven options you know Sunday Monday Tuesday Wednesday Thursday Friday Saturday but what if down the road whatever reason we add an eighth day what would you do well there are scripts that you can schedule to run before or after a publish so if we right-click on the project itself and let's create a new folder as I like folders and organization post publish scripts and then right click on here and say add new item and go to user scripts and say post post deploy so I suppose publishes its post deploy same kind of thing let's call this let's leave it post deployment Oh actually call script Dodds post-deploy person okay that's going work in the person table your naming scheme can be whatever you'd like but what I'm gonna do is I'm going to assume that I want to have at least one person in the person table and that person is going to be the test user or demo user okay there was word first name is demo last name with user now I could do you know insert into DB o dot person first name last name values demo user the problem with this is UPS I love that intellisense the problem with this is that it's going to run this script every time I publish so if I publish five times we'll have five users called demo user but if I were to do if not exists for the s select star from DB o dot person where first-name equals demo and last name equals user this is a rough script but it'll work begin and then in here paste now if you're not familiar this might be a little challenging but I'm just trying to illustrate is the fact you can do this not that you'd have to do this but if you get to the point where you say you know what I have to do this then either watches a video and it's kind of watch my syntax or Google how do I check to see if something exists because this script will run after we deploy all of our changes the really cool thing is if I rename first name a given name in my table it will rename this script as well so again great stuff but let's go ahead we don't have demo user in either in demo DB or demo DB tube let's just open up the person just show that so that's not there if I were to go my publish locations and just publishes the demo DB so it's not db2 I hit publish right click on person view data there's demo user if I republishes again and just for giggles let's do it one more time right-click on person and say if you did that my users only there once because of that check so that's how you can add scripts that run after your your publish works you can also add scripts beforehand if you want to prep things before you make the changes it's really up to you now at the beginning of video I said that I'm going to show you how to create a new project but also how to create project if you already have an existing database so let's pretend that demo 2 is an existing database we don't have the sequel project so as a right-click on the solution we'll create a new project so a new project sequel server database project let's call this sequel from existing and now we're going to do is pretend like this database already exists you want to move from here forward so oh I just notice I do have two different projects in the same solution that are both database projects perfectly fine there may be a case where you have two different databases you need to maintain may a log database and your primary database that's just fine notice down here the from existing and there's nothing in here because it's a blank database but if I right click and say imports from database selector connection and we're sa local and select demo DB to hit connect notes we have some options down here we can select I'm gonna leave it alone and hit start wait let's complete it's now complete we hit finish notice it says DB oh that's kind of the aura like and there we go SP person filtered by last name the address in person table and the full person view as well now the existing over here same thing is gonna match that so we just set up from existing database we can start from here we could commit this as it is and then we can start making changes and start publishing our changes over to demo db2 or a different database so it doesn't matter if you already have a database or if you're just starting out either way you can use this tool to put your database in a source control and have those migration scripts they and have snapshots in time you can have your team working on it together you can keep multiple databases in sync it makes it really easy to have that development database and the stage and database and the production database so you can move your your application from development all the way through production together with your database instead having two separate things you're doing now there's a lot still to cover I'd love to show you how to put this in a source control I'd love to show you how to work with a team with this and I'm going to just not in this video I wanted to leave us at the introductory level for this first video and then future videos we can explore and dive deep into one area or another okay I hope you've enjoyed it if you have any questions or comments leave them down in the comments below and I'll try and get back to you as always I am Tim quarry [Music] you [Music]
Info
Channel: IAmTimCorey
Views: 116,032
Rating: undefined out of 5
Keywords: .net, C#, Visual Studio, code, programming, tutorial, training, how to, tim corey, C# course, C# training, C# tutorial, sql, localdb, sql server, source control, git, ci/cd, continuous integration, continuous deployment, sql data tools, sql data tools visual studio 2017, sql data tools tutorial, sql server 2016, sql for beginners, entity framework, ef
Id: ijDcHGxyqE4
Channel Id: undefined
Length: 51min 9sec (3069 seconds)
Published: Mon Nov 05 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.