SlideShare una empresa de Scribd logo
1 de 14
Entity Framework 4.0 Daniel Laco Director Ejecutivo daniell@vemn.com.ar
Voto de Desconfianza Entity Framework in 3.5 SP1 is: Too complex. Too many steps are required. Too many restrictions.  I want control over my code. Not in sync with the way I work: TDD, N-Tier, Patterns
Temario PersistanceIgnorance (POCO) POCO Change-Tracking (PlainOld CLR Object) T4 Code Generation LazyLoading Soporte para N-Capas con Self-Tracking Entities Model-FirstDevelopment Code-OnlyDevelopment Mejoras en el Diseñador de Entidades Pluralización Opciones de Change Tracking
Demo Objetos POCO (PlainOld CLR Object)
Demo LazyLoading
Demo T4
Demo Desarrollo solo por Código
Demo Self-Tracking Entities
Que hay de nuevo? Plurales / Singulares Mejoras en el Diseñador Generaciónautomática de tiposretornadospor Stored Procedures Soporte para Tipos Complejos ForeignKeys Mejoras en testing con IObjectSet<T> T-SQL mas performante  y simple de leer Métodos para Ejecutar SQL
Que NOes un ORM?  La respuesta a la vida del universo y todo eso … La forma absoluta más rápida de hacer todo … No siempre están en sintonía con los avances de las Bases de Datos …
Resumen PersistanceIgnorance (POCO) POCO Change-Tracking (PlainOld CLR Object) T4 Code Generation LazyLoading Soporte para N-Capas con Self-Tracking Entities Model-FirstDevelopment Code-OnlyDevelopment Mejoras en el Diseñador de Entidades Pluralización Opciones de Change Tracking
¿Preguntas?
Muchas graciaspor su participación Daniel Laco Director Ejecutivo daniell@vemn.com.ar
[Run Reloaded] Entity Framework 4.0 (Daniel Laco)

Más contenido relacionado

Similar a [Run Reloaded] Entity Framework 4.0 (Daniel Laco)

DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzureDotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzurePlain Concepts
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Sergio Soto
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev opsMitzi Moncada
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaJose Luis Soria
 
Mobile Day - Tensor Flow
Mobile Day - Tensor FlowMobile Day - Tensor Flow
Mobile Day - Tensor FlowSoftware Guru
 
Como desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico AvengerComo desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico AvengerAdrian Diaz Cervera
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Andrés Iturralde
 
Selenium + Docker: ¡Qué me es-test container!
Selenium + Docker: ¡Qué me es-test container!Selenium + Docker: ¡Qué me es-test container!
Selenium + Docker: ¡Qué me es-test container!Ángel García Santos
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOnacho mascort
 
Salesforce DX: A closer look
Salesforce DX: A closer lookSalesforce DX: A closer look
Salesforce DX: A closer lookFederico Giust
 
Ci4 free
Ci4 freeCi4 free
Ci4 freecojug
 

Similar a [Run Reloaded] Entity Framework 4.0 (Daniel Laco) (20)

DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzureDotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
 
Clase i
Clase iClase i
Clase i
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Aug frontend dev ops
Aug frontend dev opsAug frontend dev ops
Aug frontend dev ops
 
Un "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todosUn "TFS" para gobernarlos a todos
Un "TFS" para gobernarlos a todos
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Performance en .net
Performance en .netPerformance en .net
Performance en .net
 
Mobile Day - Tensor Flow
Mobile Day - Tensor FlowMobile Day - Tensor Flow
Mobile Day - Tensor Flow
 
Como desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico AvengerComo desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico Avenger
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
Computacion Paralela Vs2010
Computacion Paralela Vs2010Computacion Paralela Vs2010
Computacion Paralela Vs2010
 
Selenium + docker
Selenium + dockerSelenium + docker
Selenium + docker
 
Selenium + Docker: ¡Qué me es-test container!
Selenium + Docker: ¡Qué me es-test container!Selenium + Docker: ¡Qué me es-test container!
Selenium + Docker: ¡Qué me es-test container!
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEO
 
Salesforce DX: A closer look
Salesforce DX: A closer lookSalesforce DX: A closer look
Salesforce DX: A closer look
 
Curso Mu
Curso MuCurso Mu
Curso Mu
 
Ci4 free
Ci4 freeCi4 free
Ci4 free
 

Más de Microsoft Argentina y Uruguay [Official Space]

Más de Microsoft Argentina y Uruguay [Official Space] (20)

CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
CodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con SilverlightCodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con Silverlight
 
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con LinuxCodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
 
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
 
CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0
 
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de controlCodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
 
CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010
 
Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40
 
Run 2 0 keynote azure
Run 2 0 keynote azureRun 2 0 keynote azure
Run 2 0 keynote azure
 
Run 20 Track SQL Server
Run 20 Track SQL ServerRun 20 Track SQL Server
Run 20 Track SQL Server
 
Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
 
(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2
 
(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1
 
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
 
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
 
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
(18.03.2009) Cumuy Invita - Iniciando el año conociendo nuevas tecnologías - ...
 

[Run Reloaded] Entity Framework 4.0 (Daniel Laco)

  • 1. Entity Framework 4.0 Daniel Laco Director Ejecutivo daniell@vemn.com.ar
  • 2. Voto de Desconfianza Entity Framework in 3.5 SP1 is: Too complex. Too many steps are required. Too many restrictions. I want control over my code. Not in sync with the way I work: TDD, N-Tier, Patterns
  • 3. Temario PersistanceIgnorance (POCO) POCO Change-Tracking (PlainOld CLR Object) T4 Code Generation LazyLoading Soporte para N-Capas con Self-Tracking Entities Model-FirstDevelopment Code-OnlyDevelopment Mejoras en el Diseñador de Entidades Pluralización Opciones de Change Tracking
  • 4. Demo Objetos POCO (PlainOld CLR Object)
  • 7. Demo Desarrollo solo por Código
  • 9. Que hay de nuevo? Plurales / Singulares Mejoras en el Diseñador Generaciónautomática de tiposretornadospor Stored Procedures Soporte para Tipos Complejos ForeignKeys Mejoras en testing con IObjectSet<T> T-SQL mas performante y simple de leer Métodos para Ejecutar SQL
  • 10. Que NOes un ORM? La respuesta a la vida del universo y todo eso … La forma absoluta más rápida de hacer todo … No siempre están en sintonía con los avances de las Bases de Datos …
  • 11. Resumen PersistanceIgnorance (POCO) POCO Change-Tracking (PlainOld CLR Object) T4 Code Generation LazyLoading Soporte para N-Capas con Self-Tracking Entities Model-FirstDevelopment Code-OnlyDevelopment Mejoras en el Diseñador de Entidades Pluralización Opciones de Change Tracking
  • 13. Muchas graciaspor su participación Daniel Laco Director Ejecutivo daniell@vemn.com.ar

Notas del editor

  1. Accediendo a datos con Entity Framework
  2. http://msdn.microsoft.com/en-us/library/bb738695.aspx Persistence Ignorance: You can define your own POCO’s (Plain Old CLR Objects) that are decoupled from any specific persistence technology. This allows you to swap out one data access stack for another should the need arise.
  3. Nuevos metodos en ObjectStatemManagerObjectStateManager.ChangeObjectStateObjectStateManager.ChangeRelationshipStateObjectStateManager.GetObjectStateEntry(entityObject).ApplyCurrentValuesObjectStateManager.GetObjectStateEntry(entityObject). ApplyOriginalValuesObjectContext.LoadProperty
  4. Better N-Tier SupportOne of the most common reasons for using POCO’s is to conceal details of object persistence behind a data access layer. Similarly, POCO’s are often passed across tiers as Data Transfer Objects (DTO’s) in a service-oriented application. One problem that has vexed distributed application developers is how to pass changes from one tier to another so they can be persisted in a disconnected manner. At first, the Entity Framework team decided to provide a low-level API for applying changes to detached objects, requiring you to roll your own change-tracking mechanism, but much of the feedback they received included requests for a built-in change-tracking mechanism and an end-to-end architecture for building n-tier apps that use the Entity Framework. In response to this feedback, the team delivered a T4 template for Self-Tracking Entities, which allows each entity to keep track of its own change state, so that you can pass it to a remote service where the entire object graph is persisted.Each generated class implements the IObjectWithChangeTracker interface, which has a ChangeTracker property, as well as methods to mark the entity as Unchanged, Modified, Added or Deleted. ObjectChangeTracker not only records the object state but also maintains original values of reference properties as well as objects that have been added to or deleted from collection properties. This means that the client can make changes to an Order by adding or removing OrderDetails, and the state of the Order and OrderDetails can be sent to the service for persistence. Change state is serialized because each entity is marked with a [DataContract] attribute and the ChangeTracker is marked with a [DataMember] attribute.Self-Tracking Entities allow the client to track change state on entities without needing to reference the Entity Framework assembly, System.Data.Entity. The change-tracking code is auto-generated by the T4 template, which produces the ObjectChangeTracker class and a generic FixupChangeTrackingCollection class that does relationship fix-up and implements ICollection to keep track of additions and deletions. Deleted items are cached so they can be removed later when changes are persisted on the service side.Your service would typically expose a method for retrieving an object graph such as Order and OrderDetails, and a method for updating the object graph. In the update method, you would call ApplyChanges<T> on the appropriate entity set. ApplyChanges is an extension method residing in the Microsoft.Data.Entity.CTP assembly, which you bring into scope by adding a using directive for the Microsoft.Data.Entity namespace. This method accepts an object graph as well as a pointer to a method that returns an IEntityChangeTracker, which is responsible for informing the object state manager of these changes. The Self-Tracking Entities T4 template also generates a EntityChangeTrackerAdapter class that implements IEntityChangeTracker by translating the persistence-neutral ObjectStateenum (Added, Deleted, Modified, Unchanged) to the equivalent EF-specific EntityStateenum values. The code in your service-side update method could look something like this:public Order UpdateOrder(Order order){    using (NorthwindEntitiesctx = new NorthwindEntities())    {        ctx.Orders.ApplyChanges(order,            EntityChangeTrackerAdapter.GetSelfTrackingEntityInfo);        ctx.SaveChanges();        return order;    }}
  5. http://code.msdn.microsoft.com/DesignerExtStartKit (ADO.NET Entity Data ModelDesignerExtensionStarter Kit )T-SQL mas performante Se mejoraron los Joins Se sacaron Cast innecesarios Se sacaron algunos IsNull innecesariosContains, StartWidh y EndWith ahora son Like %%
  6. http://msdn.microsoft.com/en-us/library/bb738695.aspx Persistence Ignorance: You can define your own POCO’s (Plain Old CLR Objects) that are decoupled from any specific persistence technology. This allows you to swap out one data access stack for another should the need arise.
  7. Accediendo a datos con Entity Framework