Transcript
Page 1: Introducing ASP.NET MVC 4 and Entity Framework

An Intertech Course

Introducing

ASP.NET MVC 4 and Entity Framework

Intertech’s Oxygen Blast – November 26, 2013

Davin Mickelson, [email protected]

Page 2: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 2

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

New fishing hat

doesn’t work!

Page 3: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 3

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

Page 4: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 4

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

Page 5: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 5

MVC & EF Futures, 3 of 3

ASP.NET MVC 5

EF 6

Visual Studio 2013

.NET 4.5.1

Windows 8.1

Page 6: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 6

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>

Page 7: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 7

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

Page 8: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 8

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.

Page 9: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 9

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!

Page 10: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 10

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.

Page 11: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 11

ASP.NET MVC vs. ASP.NET FormsASP.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.

Page 12: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 12

ASP.NET MVC - Five Versions

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

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

Visual Studio 2013 v4/v5 (both native)

Page 13: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 13

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

Page 14: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 14

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

Page 15: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 15

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>

Page 16: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 16

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.

Page 17: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 17

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.

Page 18: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 18

Controllers - Defining A Controller must implement IController interface and

must end in the name Controller.

Usually, it will inherit from the Controller base class.

Page 19: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 19

Controllers - Defining

Alternatively, the class can implement the IController

interface

This is a really simple controller that just returns a simple

message.

Page 20: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 20

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

Page 21: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 21

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();

Page 22: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 22

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.

Page 23: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 23

Controllers – Passing Data

Page 24: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 24

Controllers – Passing Data

The View and the final response displayed in IE 10.

Page 25: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 25

Controllers - Adding New Controllers can be easily added to the project.

There are many (hidden?) context menus available for launching

powerful MVC wizards.

Page 26: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 26

Controllers - Adding Incredible scaffolding support is included!

Page 27: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 27

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.

Page 28: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 28

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

Page 29: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 29

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

Page 30: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 30

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)

Page 31: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 31

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

Page 32: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 32

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…

Page 33: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 33

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”}))

Page 34: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 34

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.

Page 35: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 35

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.

Page 36: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 36

RouteConfig.cs – Default Route

Page 37: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 37

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)

Page 38: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 38

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

Page 39: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 39

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

Page 40: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 40

Route Debuggers

Check out some of the route

visualizers/debuggers

available.

Page 41: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 41

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

Page 42: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 42

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

Page 43: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 43

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)

Page 44: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 44

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.

Page 45: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 45

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

Page 46: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 46

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.

Page 47: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 47

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 EF-

aware data providers.

Page 48: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 48

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.

Introducing Entity Framework (EF)

Page 49: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 49

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.

EF Example

Page 50: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 50

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.

EF Example

Page 51: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 51

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.

EF Example

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!

}

}

}

Page 52: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 52

ObjectContext MembersMember 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.

Page 53: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 53

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!

Page 54: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 54

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.

Page 55: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 55

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.

Page 56: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 56

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

Page 57: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 57

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>

Page 58: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 58

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.

Page 59: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 59

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

Page 60: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 60

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)

Page 61: Introducing ASP.NET MVC 4 and Entity Framework

Intertech

Copyright © Intertech, Inc. 2013 • www.Intertech.com • 800-866-9884 • Slide 61

Thank you!

Question?!?

Davin Mickelson

[email protected]

Shoot me an email!


Top Related