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

MVC and Entity Framework 4

on

  • 3,931 views

Slide deck presented to the San Diego .NET User Group on Tuesday, March 23, 2010

Slide deck presented to the San Diego .NET User Group on Tuesday, March 23, 2010

Statistics

Views

Total Views
3,931
Views on SlideShare
3,915
Embed Views
16

Actions

Likes
0
Downloads
32
Comments
0

1 Embed 16

http://www.slideshare.net 16

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 4 MVC and Entity Framework 4 Presentation Transcript

    • ASP.NET MVC and Entity Framework
      San Diego .NET User Group
      Tuesday, March 23, 2010
      James Johnson
    • Founder and President of the Inland Empire .NET User’s Group
      Independent Consultant
      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 shiny coins during the presentation
      Who am I?
    • An effort to help support local user groups by providing speakers
      Telerik speakers bureau
    • Overview of ASP.NET MVC
      Overview of Entity Framework
      Things that are cool
      Things to watch out for
      How to do it
      Agenda
    • Demo
    • V 2.0 RTM’d March 11, 2010
      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
    • Hey! There’s a big honking server control there!
      Using the TelerikRadEditor in this project
      Very easy to setup if you follow these rules
      Needs to be in a “form” tag, not Html.BeginForm()
      Handlers need to be changed from .aspx to .axd
      DialogHandlerUrl, SpellCheckChettings
      Use a custom tools file
      ASP.NET MVCTelerikRadEditor
    • Setting
      <% RadEditor1.Content = Model.Description %>
      Getting
      Need to pass in the request and name of editor
      ASP.NET MVCTelerikRadEditor Set and Get Content
      varcontent = _radControlHelper.GetEditorContent(Request, “RadEditor1");
      public string GetEditorContent(HttpRequestBase request, string editorId)
      {
      varrawContent = (from postedValue in request.Form.Keys.OfType<string>()
      where postedValue.EndsWith(editorId)
      select request.Form[postedValue]).FirstOrDefault();
      return Telerik.Web.UI.Editor.ContentEncoder.Decode(rawContent);
      }
    • First version (V 1) came with .NET 3.5 SP1
      August 2008
      Not widely thought of by the community
      Second version (V4) is set to be 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 will handle 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?
    • James Johnson
      james@iedotnetug.org
      www.duringlunch.com
      Twitter, @latringo
      Inland Empire .NET User’s Group
      www.iedotnetug.org
      2nd Tuesday’s of each month in Riverside
      Thank you