This is the second part to the solution for Papa Bob's Mega Challenge. Going in to this part, you should have your Presentation, Domain and Persistence layers set up and your DTO in place. The database should be created inside the Presentation (Web) project, and the Entity Data Model should be connected to the database from within the Persistence layer.
Before moving on, it would be a good idea to test the structure we've implemented to ensure it works. To do this, we can hard-code an order inside the Persistence layer and attempt to save it to the database. To do this, navigate to the OrderRepository.cs and make the following CreateOrder() method:
This code creates a new instance of the Entity Model that we will save the order to later. The order variable is a new instance of the Persistence layer's Order class that was generated by the Entity Framework:
Next, populate the order's properties with hard-coded values for testing purposes:
Now that we have a method that will create an order and add it to the database, we need to make a way to add it from the top layer of the application to test the application's structure. This will require a 'spike of functionality' through the application; from the Presentation to Domain, down to the Persistence to call the CreateOrder() method.
Begin in the Domain's OrderManager.cs and create a new method called CreateOrder() that makes a call to the Persistence layer's CreateOrder() method:
This Domain method will be called from the Presentation layer when the user clicks the Order button. In order to for this to happen, we need to add a new Web Form to PapaBobs.Web. Right-click on the Project and add a Default.aspx page. Create an ASP Button control inside the source view of Default.aspx, and give it a new OnClick event:
Inside the Default.aspx.cs' orderButton_Click(), call the Domain layer's CreateOrder() method:
Now, run your project and click the Order button to see what happens:
Note: When running the application, you may have accidentally run one of the Class Libraries instead of the Web project. To make sure this doesn't happen, right-click on 'PapaBobs.Web' and select 'Set as Startup Project'
This error is being thrown because we have yet to modify our connection string in the Presentation layer, nor have we added the Entity Framework package to our solution.
To begin with, we'll need copy and paste some of the connection string found within the App.Config file of the Persistence layer project to the Web.Config file in the Presentation layer:
Copy the text inside this file starting at the opening <configSections> tag and ending with the closing <entityFramework> tag:
Next, open the Web.Config file and, just above the <system.web> tag, paste in the text from App.Config:
Finally, right-click on 'PapaBobs.Web' and select 'Manage NuGet Packages...' From the dialog, browse for the Entity Framework and add it to this project:
Note: At the time this document was published, 6.1.3 was the latest stable version of the Entity Framework. Depending on when you create this project, that might be different. Use whatever is the newest version available to you.
Now, save and run the solution. Notice that when you click the Order button, nothing noticeably happens. Stop debugging and return to the Server Explorer. Under the Tables section of PapaBobsDbEntities, right-click on the 'Orders' table and select 'Show Table Data' to see the order information:
Note: You may need to click the Refresh button in the top left-hand side of the page in order for the information to display.
This concludes this part of the solution for Papa Bob's Mega Challenge. Now that we've successfully created a call through all three layers to ensure that our solution is set up properly, we can begin working with the Data Transfer Object in the next part of the solution.
Papa Bob's Mega Solution Part 2 - Adding an Order to the Database