Introducing ASP.NET MVC 4 and Entity Framework
Transcription
Introducing ASP.NET MVC 4 and Entity Framework
Introducing ASP.NET MVC 4 and Entity Framework Intertech’s Oxygen Blast – November 26, 2013 Davin Mickelson, dmickelson@intertech.com An Intertech Course Intertech About Me… Developed web applications since 1998 with: FrontPage and Visual InterDev, FPSEs, ASP, COM. Perl, ColdFusion <cftag>, ASP.NET: C#, VB.NET, F#. Intertech Consultant/Instructor since 2005. Intertech Courses: Complete ASP.NET 4.5 (5 days). Programming in HTML5 with JavaScript and CSS3 (5 days). Developing ASP.NET MVC 4 Web Applications (5 days). Programming in C# (5 days) Developing Applications Using Entity Framework 4.1 (2 days). I teach .NET, SQL Server BI, TFS, jQuery, MVC, HTML5, etc. Intertech blog: http://www.intertech.com/blog Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 2 New fishing hat doesn’t work! Intertech ASP.NET MVC 4 Agenda, 1 of 3 Purpose/History of MVC 4 Versions/Features of MVC/Visual Studio Download Instructions Controllers ViewBag/ViewData and TempData Models Model Validation Views ASPX Forms and Razor View Engines Routing New MVC 4 Features Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 3 Intertech Entity Framework Agenda, 2 of 3 Purpose/History of EF Versions/Features of EF/Visual Studio Download Instructions MVC and EF Together Three EF Methodologies Database First Model First Code First Querying EF LINQ to Entities Entity SQL EntityClient API Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 4 Intertech MVC & EF Futures, 3 of 3 ASP.NET MVC 5 EF 6 Visual Studio 2013 .NET 4.5.1 Windows 8.1 Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 5 Intertech Three ASP.NET Web App Architectures ASP.NET Forms Been around since .NET 1.0 was released Visual Studio 2002+ ASP.NET Web Pages Single Razor Web files - no code-behind files Visual Studio 2008+ Web Site or WebMatrix (free!) ASP.NET MVC Visual Studio 2008+ to develop these apps Today, we will look this architecture! <DEMO> Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 6 Intertech What is MVC? Model – View – Controller (MVC) Originally developed in 1978 with Smalltalk at Xerox PARC In recent years, MVC has been used as a Web framework MVC is used with Java and Ruby Jakarta Struts, Ruby on Rails, JSF, Spring, and more “Separation of Concerns” The model, the view, and the controller are broken into separate domains These domains may or may not be defined in separate methods, classes, or assemblies There is no hard set of rules but rather conventions Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 7 Intertech Introducing ASP.NET MVC Popular new way to develop ASP.NET Web applications. MVC applied to the ASP.NET framework. Already been done before with ALT.NET! Example: Castle MonoRail http://www.castleproject.org/projects/monorail/ Minneapolis ALT.NET UG: http://mplsalt.net/MainPage.ashx Microsoft’s release ASP.NET MVC has more pull, though. Based on file and folder naming conventions. High quality coding promoted by unit testing. Test Driven Development (TDD) is supported. Support for DI / IoC frameworks. Ninject, StructureMap, MEF, Castle Windsor, Spring.NET, Autofac, Unity, etc. Simplifies testing parts of an app by using mock objects. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 8 Intertech Why Use ASP.NET MVC? Hate the resource wastefulness of standard ASP.NET forms. Need unit testing. Prefer greater control over the HTML, CSS, and JavaScript sent to the Web browser. Want refined URL addresses for better Search Engine Optimization (SEO). Have previous experience with the MVC model in another language. Tired of standard Web forms and want to try something new and cool! Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 9 Intertech Why NOT Use ASP.NET MVC? Already supporting a large ASP.NET Web forms project that doesn’t need this architecture. Prefer using the ASP.NET server controls. Prefer ASP.NET Rapid Application Development (RAD) environment (drag and drop). Not a professional web developer. Prefer the simplicity of Web pages in WebMatrix. Prefer controls having automatic state management (ViewState). Don’t need this level of control over the final HTML, CSS, and JS. Haven’t had time to sharpen your C#/VB programming skills with: HTML/CSS/JS, Lambda operator, LINQ, Extension methods, Entity Framework, etc. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 10 Intertech ASP.NET MVC vs. ASP.NET Forms ASP.NET Web Forms ASP.NET MVC We know this stuff already! Entirely new model we must learn Supports ASP.NET Server Controls Primarily supports raw HTML/JS Automatic state management of controls Manual state management Drag and drop controls “Scaffolded” (wizard) views and manual Web page coding Been around since 2002 1.0 released on April 9th, 2009 Weak or custom unit testing required Encourages and includes unit testing support! Web Sites and Web Application Project (WAP) WAP only! Both ASP.NET frameworks are supported in VS 2008/2010/2012/2013+ Both have access to the five intrinsic objects (Session, Application, etc.) Both support the use of the ASP.NET Provider models (Membership, Profile, Sitemap, and more) Both support EF and the popular JavaScript libraries: Modernizr, jQuery, etc. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 11 Intertech ASP.NET MVC - Five Versions Visual Studio ASP.NET MVC Visual Studio 2008 v1/v2 (both added to Visual Studio) Visual Studio 2010 v2/v3/v4 (v2 native), v3 and v4 added Visual Studio 2012 v3/v4/v5 (3.0 native), v4 and v5 added Studio 2013 v4/v5 (both native) Visual ASP.NET MVC is a revolutionary step for Microsoft This is the first time Microsoft has ever embraced the open source model at this level The complete ASP.NET MVC source code can be downloaded from CodePlex, modified, and then recompiled for your needs! http://aspnetwebstack.codeplex.com/ Many free JavaScript libraries included such as jQuery, Modernizr, and Knockout Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 12 Intertech Create an ASP.NET MVC Project Pick a language (C# or VB) for your WAP Click File | New | Project | ASP.NET MVC 4 Web Application Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 13 Intertech Create an ASP.NET MVC Project Choose a template, decide on a view engine, and select whether to create a unit test project Visual Studio supports alternative (installed) testing frameworks: NUnit, MBUnit, and more Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 14 Intertech Project Created! There is a huge number of referenced assemblies! Talk about embracing the open source community! Some are referenced .NET Framework assemblies – System.<anything> Many are NuGet packages installed with the selected project template They are installed in the \packages\ subfolder They are also copied to the WAP’s \bin\ folder Curious what they do? ILDasm.exe! <DEMO> Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 15 Intertech Models, Views, and Controllers These three folders suggest where to define the three domains Conventions: Each controller class must be in the Controllers folder Each controller class contain one or more action methods Each view file is placed in subfolder named after a controller class. Each view file maps to an action method of a controller class Model classes can be created anywhere - the Models folder is fine or in a separate .dll. The Shared folder contains shared resources such as: Web pages, layouts, error view, and partial views. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 16 Intertech Controllers - Purpose A Controller is responsible for handling incoming requests and sending back the proper response. It is the first of the three MVC members to interact with the request. A Controller class contains “action methods” that usually map to views with the same name. Most typically, they interact with a Model to generate or retrieve data and/or use business rules. They take the retrieved data and pass it off to a View for generating a Web response to the user. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 17 Intertech Controllers - Defining A Controller must implement IController interface and must end in the name Controller. Usually, it will inherit from the Controller base class. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 18 Intertech Controllers - Defining Alternatively, the class can implement the IController interface This is a really simple controller that just returns a simple message. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 19 Intertech Controllers - Actions The simplest controller just returns HTML to the Web browser IMPORTANT: By default, all public methods in a controller class can be called from the Web browser Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 20 Intertech Controllers - ActionResult Most controller methods return a type of ActionResult ActionResult Types Purpose Examples of Use ViewResult Displays a View return View(); PartialViewResult Displays a Partial View return PartialView(); RedirectToRouteResult Redirects to a route return RedirectToRoute(“NamedRoute”); RedirectResult Simple URL redirection return Redirect(“http://bing.com”); ContentResult Returns raw text to the browser return Content(rssString, “application/rss+xml”); FileResult Returns binary data to browser return File(@”.\Doc1.docx”, “application/vnd.ms-word”); JsonResult Returns an object serialized as Json return Json(Car); JavaScriptResult Returns JavaScript intended to run on the browser. Used with Ajax. return JavaScript(“$(#elementName).hide();”); HttpUnauthorizedResult Returns code 401 – not authorized return new HttpUnauthorizedResult(); EmptyResult Doesn’t return. Ends. Return new EmptyResult(); Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 21 Intertech Controllers – Passing Data Data is passed to a View using the ViewData or the TempData dictionary collections. They store data as System.Object. ViewData is a ViewDataDictionary object Used for a single Request/Response. ViewBag, introduced with MVC 3, is usually preferred and uses ViewData object. Stores data as “dynamic”,not Object - no casting required in View! TempData is a TempDataDictionary object. Used to preserve data between a RedirectResult or RedirectToRouteResult. Stores data for the current and next HTTP Request/Response. Uses Session object behind the scenes. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 22 Intertech Controllers – Passing Data Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 23 Intertech Controllers – Passing Data The View and the final response displayed in IE 10. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 24 Intertech Controllers - Adding New Controllers can be easily added to the project. There are many (hidden?) context menus available for launching powerful MVC wizards. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 25 Intertech Controllers - Adding Incredible scaffolding support is included! Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 26 Intertech Controllers - Ajax Ajax calls can also be made of the controller. These are also public methods exposed from the controller class. The example below uses the ASPX Forms view engine. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 27 Intertech Models – Purpose Business Logic (BL), Data Access Logic (DAL) – it’s all defined here! Where you actually write the code is up to you. With the Model, you have the most flexibility as to where you’d like to place the code The Model code can be located: Right inside the Controller class (not recommended) In classes defined in the Models folder In classes defined elsewhere in the WAP In a Class Library assembly for greater reuse Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 28 Intertech Models - Purpose A Model is code that enforces business logic. It can also store and return data in a fashion that can ultimately be bound to and displayed by a View There are many different types of models! Specifically, a model can be used for: Retrieving/Storing Data in an .xml file Retrieving/Storing Data in a database Pure business logic A model represents the intelligence of the system Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 29 Intertech Models - Types Models can be based on classic ADO.NET methods defined in CRUD methods of a DAL Often times referred to as POCOs (Plain Old CLR Objects) Models can also be based on Object-Relational Mapper (ORM) software. Examples include: LINQ to SQL (Dead technology - avoid!) Entity Framework (More coming up!) NHibernate (a .NET version of Java’s Hibernate) Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 30 Intertech Views - Description Two different View Engines ASPX Forms View Engine Razor View Engine (MVC 3+) They are never directly requested by the Web browser They are often used with .master pages/_layouts ASPX Views make use code nugget <%: %> syntax This is the same as typing out Response.Write() but shorter Razor uses a simplified code nugget @ syntax based on Web Pages Transitioning from ASP.NET Forms to ASP.NET MVC? Consider initially learning MVC with ASPX View Engine Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 31 Intertech Views - Adding Views give us full control to the HTML and JavaScript mark up Views can be easily added to the project in the Solution Explorer IMPORTANT: Make sure you are adding it to subfolder! Best way to add view? Right-click the code in an action method and click Add New… Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 32 Intertech Views – HTML Helper Methods Views also make use of the HTML Helper methods For example: @Html.TextBox("txtName", ViewData["Name"]) HTML Helper Example Use CheckBox Html.CheckBox(“chkChoose”, true) Radio Button Html.RadioButton(“rbRadio”, “val”, false) Hidden Form Field Html.Hidden(“hField”, “CustomerID”) Password Textbox Html.Password(“pPassword”, “val”) Text Area Html.TextArea(“taTextArea”, “val”, 4, 10, null) TextBox Html.TextBox(“txtName”, “Davin”) Drop-Down List Html.DropDownList(“ddlColors”, new SelectList( new [] {“Red”, “Green”, “Blue”}), “Pick One”)) ListBox Html.ListBox(“lbColors”, new MultiSelectList( new [] {“Red”, “Green”, “Blue”})) Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 33 Intertech Views – HTML Helper Methods Different Types of Helper methods Classic un-typed Helper methods (v1/v2 – no editor help) Strongly-typed Helper methods (IntelliSense!) Template Helper methods (Attempts full object code gen) Rich Helper methods (Chart, WebGrid) Your custom Helpers via Extension Methods <DEMO> Many 3rd Party Helper methods (Fill in the gaps!) Telerik, ComponentSource, CodePlex, GitHub, etc. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 34 Intertech System.Web.Routing.dll Installed with VS 2008 SP1 (.NET 3.5 SP1) and newer Used by Dynamic Data Web applications for routing web requests Also used with ASP.NET MVC for routing requests to the proper controllers Routing is configured in the /App_Start/RouteConfig.cs file via a call from Global.asax. A static method called RegisterRoutes() registers URL requests to controller action methods. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 35 Intertech RouteConfig.cs – Default Route Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 36 Intertech Default Route “Default” is the optional name of the route {controller} is the name of the controller class {action} is the name of the public action method in the controller class {id} is an optional value passed to the action method as a parameter If any or all are not specified, the default URL values are used (http://server:<port #>/Home/Index) Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 37 Intertech Routes can be confusing! More routes can be added They should be added from most specific to most generic The first route that matches a request wins Not necessarily the best match! Important points: The static RegisterRoute() method can be unit tested Routing is a silent but powerful fourth player in ASP.NET MVC You can also define “catchall” wildcard routes for handling all kinds of data tacked onto the end of the query string Consider developing or downloading a route debugger There are free ones available Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 38 Intertech Sample Routes (Ignore port 6831) http://localhost:6831/ http://localhost:6831/product http://localhost:6831/6 http://localhost:6831/product/junk http://localhost:6831/product/Index Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 39 Intertech Route Debuggers Check out some of the route visualizers/debuggers available. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 40 Intertech Unit Testing ASP.NET MVC Good Unit Testing frameworks test all behavior, no matter the visibility declarations They can test private, protected, internal, protected internal, and public members Many unit testing frameworks exist including Visual Studio Testing Framework, NUnit, xUnit.net, and more. http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#.NET_programming_languages Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 41 Intertech Unit Testing ASP.NET MVC Testing the RegisterRoutes() will ensure that no one has changed them Testing the controllers can simulate user requests Web users will try to pass you anything; be ready for that! Testing the Models guarantee correct results Especially important if the models are in separate Class Library assembly for reuse across projects! Testing ORM classes probably unnecessary (opinion!) Testing Views? Maybe Unfortunately, if you change the HTML/JS out just slightly, your View tests will fail Some developer prefer not to tests their Views, or only certain Views Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 42 Intertech Test-Driven Development (TDD) Visual Studio Class Designer supports TDD by making all new methods fail unit tests until they’ve been implemented TDD is optional True TDD developers completely write the tests and then write the code in the methods/properties to pass those tests It is a form of Extreme Programming (XP) Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 43 Intertech New ASP.NET MVC 4 Features New project template wizard. Better scaffolding of action methods and views. Improved “scaffolded” views that support mobile devices via CSS media queries. Support for Web API project template supporting RESTful services with OData queries. Support for OpenID and OAuth authentication including 3rd party sites such as Facebook and Yahoo. Single Page App project template. Mobile project template that include jQuery Mobile. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 44 Intertech Introducing Entity Framework (EF) The ADO.NET Entity Framework (or simply EF) was introduced with Visual Studio 2008 Service Pack 1. .NET 4.0 / Visual Studio 2010 support new EF designers, and a better programming experience. EF 1 left a lot of “opportunities for improvement”. So much so that the next version was EF 4 with .NET 4.0. The version EF 5 switched to Open Source! You can download it as NuGet package. EF 6 was released with VS 2013. Learn more here: http://msdn.microsoft.com/en-us/data/aa937723 Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 45 Intertech Introducing Entity Framework (EF) EF is a programming model which attempts to lessen the gap between database constructs and object oriented programming constructs. Using EF, you can interact with a relational database without ever seeing a line of SQL code (if you so choose). Rather, when you apply LINQ queries to your strongly typed classes, the EF runtime will generate proper SQL statements on your behalf. By way of another example, rather than updating database data by finding a row, updating the row, and sending the row back for processing using a batch of SQL queries, you can simply change properties on an object and save its state. The EF runtime will update the database automatically. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 46 Intertech Introducing Entity Framework (EF) As far as Microsoft is concerned, the ADO.NET Entity Framework is a new member of the data access family not meant to replace the connected or disconnected layers. However, EF works really nicely with MVC. It saves you an incredible amount of typing over the more primitive world of SQL queries and row/column collections. .NET 4.0+ ships with EF providers for Microsoft SQL Server databases. Many third party databases (Oracle, MySQL, etc.) provide EFaware data providers. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 47 Intertech Introducing Entity Framework (EF) The strongly typed classes used within EF are termed entities. Entities are a conceptual model of a physical database which maps to your business domain. Formally speaking, this model is termed Entity Data Model (EDM). While the EDM is a client side set of classes which map to a physical database, understand that the entities need not map directly to the database schema in so far as naming conventions go. Your entity classes can be restructured to fit your needs, and the EF runtime will map your unique names to the correct database schema. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 48 Intertech EF Example For example, assume you have the following physical database table in a SQL Server database: If you were to generate an EDM for the Inventory table of the AutoLot database, the entity will be called (by default) Inventory. However, you could rename this class to Car and rename the properties which map to the columns of the Inventory table. Because of this loose coupling, the entities can be shaped to closely model your business domain. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 49 Intertech EF Example If you were to generate an EDM for the Inventory table of the AutoLot database, the entity will be called (by default) Inventory. However, you could rename this class to Car and rename the properties which map to the columns of the Inventory table. Because of this loose coupling, the entities can be shaped to closely model your business domain. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 50 Intertech EF Example Consider the following Program class, which will add a new row to the Inventory table of AutoLot, using the Car entity class, and a related class named AutoLotEntities. This class is called an object context, whose job it is to communicate with the physical database on your behalf. class Program { static void Main(string[] args) { // Connection string automatically read from generated config file. using (AutoLotEntities context = new AutoLotEntities()) { // Add a new record to Inventory table, using our entity. context.Cars.AddObject(new Car() { AutoIDNumber = 987, CarColor = "Black", MakeOfCar = "Pinto", NicknameOfCar = "Pete" }); context.SaveChanges(); // Save changes back to database! } } } © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 51 Copyright Intertech ObjectContext Members Member of ObjectContext Meaning in Life AcceptAllChanges() Accepts all changes made to entity objects within the object context. AddObject() Adds an object to the object context. DeleteObject() Marks an object for deletion. Must still SaveChanges(). ExecuteFunction() Executes a stored procedure in the database. ExecuteStoreCommand() Allows you to directly send a SQL command to the data store. GetObjectByKey() Locates an object within the object context by its key. SaveChanges() Saves all updates to the data store. CommandTimeout This property gets or sets the timeout value, in seconds, for all object context operations. Connection This property returns the connection string used by the current object context. SavingChanges This event fires when the object context is saving changes to the data store. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 52 Intertech Three Ways to Use EF Database First A model and ObjectContext class is automatically built based on an existing database. Model First A model is built first, then EF automatically creates the database and the ObjectContext class Code First Classes are created by the developer that inherit from DBContext. EF creates the underlying database, typically a LocalDB instance of SQL Express. No .edmx model is created – the classes are the model! Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 53 Intertech Three Layers (Database/Model First) All three layers of the Entity Data Model (EDM) are defined in the *.edmx file. Conceptual Layer This represents the entities and their relationships in the model Physical Layer This represents the underlying tables in the database Mappings This represents the mapping from model to database. Most settings (not all!) can be made using the designer. Each new version of EF released adds more functionality to the designer. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 54 Intertech Database First Most EF applications original started out this way before EF 4.1 May be the most likely way you use EF Oldest way of using EF Greatest support in Visual Studio Model validation more difficult Must use “Buddy classes” so data annotations/validation rules are not lost. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 55 Intertech Model First A very flexible pattern Allows you to design the model using prototypes in the Toolbox. Will use LocalDB database until you change connection string in Web.config Still using Buddy classes for model validation Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 56 Intertech Code First Most flexible to create and easiest for programmers. No visible .edmx designer file created Database created in /App_Data/ using EF base classes DBContext represents the model DBSet represents an entity Database can be recreated: Every time the web app is started When the model changes Data is “seeded” (populated) during application startup in Global.asax Override Seed() method <MVCMusicStore Demo> Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 57 Intertech Querying Entity Framework – 3 ways LINQ to Entities Most commonly, you will use LINQ Query Expressions to retrieve data from EF. Check out the free LINQ editor, LINQPad. Entity SQL Similar to the standard SQL language, this alternate SQL language can be used to query EF. SELECT VALUE c FROM AWLTEntities.Customers AS c WHERE c.FirstName = ‘Jim’ EntityClient API Programming can also be done directly against the EntityClient API. Similar to classic ADO.NET but objects are Entity versions. EntityConnection, EntityCommand, EntityDataReader, etc. Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 58 Intertech Microsoft Tool Futures ASP.NET MVC 5 Is included with VS 2013 next month, Available for VS 2012 now! Includes ASP.NET Identity,Twitter Bootstrap in the MVC template, Authentication Filters, Filter overrides, more… EF 6 Asynchronous data access, Better Code-First Support, more… Included with VS 2013 Visual Studio 2013, looks a little different but easier to use than VS 2012 RTM’d in August, 2013 Support added for Windows 8.1, EF6, and MVC 5 Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 59 Intertech Microsoft Tool Futures .NET 4.5.1 Not that many new features – .NET 4.5 just came out! Suggested moving to NuGet package release Obvious support added for Windows 8.1 Store front apps Windows 8.1 New Start button offering shutdown option Three apps simultaneously can run on Tile view Store front apps are fun to build with C#, VB, or JavaScript. All your JavaScript skills transfer over check it out! NOTE: Must develop on Windows 8/8.1 (not Windows 7 or Server 2012) Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 60 Intertech Thank you! Question?!? Davin Mickelson dmickelson@Intertech.com Shoot me an email! Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 61