MVC and Entity Framework
Upcoming SlideShare
Loading in...5
×
 

MVC and Entity Framework

on

  • 1,155 views

My presentation on MVC and Entity Framework and how to get the two to work together.

My presentation on MVC and Entity Framework and how to get the two to work together.

Statistics

Views

Total Views
1,155
Views on SlideShare
1,154
Embed Views
1

Actions

Likes
1
Downloads
19
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MVC and Entity Framework MVC and Entity Framework Presentation Transcript

  • ASP.NET MVC and Entity Framework
    Utah Code Camp
    Saturday, September 25, 2010
    James Johnson
    Technical Evangelist
  • Technical Evangelist with ComponentOne
    Founder and President of the Inland Empire .NET User’s Group
    Microsoft MVP
    But I don’t consider myself an expert. I just love to play
    ADHD/ADD/OCD when it comes to new technology
    Can’t stay away from the shiny new stuff
    Please don’t drop any new coins during the presentation
    Who am I?
  • Overview of ASP.NET MVC
    Overview of Entity Framework
    Things that are cool
    Things to watch out for
    How to do it
    Agenda
  • Demo
  • Models
    Views
    Controllers
    No Postbacks
    Very limited use of existing server controls
    Clean HTML makes CSS and JavaScript easier
    What all the cool kids are using these days.
    ASP.NET MVC
  • First version (V 1) came with .NET 3.5 SP1
    August 2008
    Not widely thought of by the community
    Second version (V4) released with .NET 4
    Maps POCO objects to Database objects
    A collection of things instead of a dataset of rows
    “things” are the Entities
    Entity Framework
  • Why?
    Adds a layer of abstraction between Database and Code
    DBA can structure DB how they want
    Developer can map to the DB how they want
    Rename Entities for more comfortable use.
    EF handles the mapping
    Entity Framework
  • Entity Data Model – EDM
    Deals with the Entities and the Relationships they use
    Entities
    Instance of EntityType
    Represent individual instances of the objects
    Customer, books, shoes
    Fully typed
    Relationships
    V1 was difficult to work with relationships
    Needed special tricks to load related data
    Entity FrameworkDefinitions
  • Adding an EDM to your project
    Demo
    • A design pattern to defer initialization until needed.
    • EF 4 fixes a lot of problems with this
    • Supports Lazy Loading
    • OFF by default
    • ObjectContext setting, not application setting
    context.ContextOptions.DeferredLoadingEnabled=true;
    List<Thing> things = context.Things.ToList();
    foreach(var thing in things)
    {
    varthingItems = thing.ThingItems
    }
    Entity FrameworkLazy Loading
  • Use if you will be needing every related entity
    List<Thing> things = context.Things.Include(“ThingItems”);
    foreach(var thing in things)
    {
    varthingItems = thing.ThingItems
    }
    Entity FrameworkEager Loading
  • The context is the instance of the entity
    Passing an entity around to tiers breaks the context
    V4 handles this issue with “self-tracking” entities
    Make sure the context is always the same
    Entity FrameworkContexts
  • Entity FrameworkContexts
    public class ModelHelper
    {
    private static CourseEntities _db;
    public static CourseEntitiesCourseEntities
    {
    get
    {
    if(_db == null)
    _db = new CourseEntities();
    return _db;
    }
    set { _db = value; }
    }
    }
    private readonlyCourseEntities _db = new CourseEntities();
  • Entity FrameworkContexts
    private Student AddStudent(Student student, Course course)
    {
    student.Courses.Add(course);
    _db.SaveChanges();
    }
    Didn’t work because course was in a different context
    private Student AddStudent(Student student, Course course)
    {
    varnewStudent = GetStudent(student.Id);
    varnewCourse = GetCourse(course.Id);
    newStudent.Courses.Add(newCourse);
    _db.SaveChanges();
    }
  • Very similar to LINQ to SQL
    Major difference
    LINQ to SQL - .SingleOrDefault()
    LINQ to Entities - .FirstOrDefault()
    Selecting
    public Course GetCourse(int id)
    {
    var course = (from c in _db.Courses
    where c.Id.Equals(id)
    select c).FirstOrDefault();
    return course;
    }
    Entity FrameworkLINQ to Entities
  • Deleting
    public void DeleteCourse(Course course)
    {
    _db.DeleteObject(course);
    _db.SaveChanges();
    }
    Adding (Inserting)
    public void AddCourse(Course course)
    {
    _db.AddToCourses(course); //this will be a list of AddToX
    _db.SaveChanges();
    }
    Entity FrameworkLINQ to Entities
  • Editing (Updating)
    public void EditCourse(Course course)
    {
    _db.Courses.Attach(new Course { Id = course.Id });
    _db.Courses.ApplyCurrentValues(course);
    _db.SaveChanges();
    }
    “course” has been edited somewhere else – MVC Controller, so a “stand-in” is created
    Entity FrameworkLINQ to Entities
  • Questions?
  • Tweet “@componentone <3’s Utah Code Camp” for a second chance to win
  • James Johnson
    jamesj@componentone.com
    www.latringo.me
    Twitter, @latringo
    Inland Empire .NET User’s Group
    www.iedotnetug.org
    2nd Tuesday’s of each month in Riverside
    Thank you