Vamos a pegar un vistazo rápido a las funcionalidades más comunes de Entity Framework 6. Los que venimos de utilizar LINQ pues tenemos que adaptarnos un poco, pero tampoco es mucho y a la larga es mejor trabajar con EF.

Crear un contexto

Pour Gabbana For Perfume Dolceamp; WomenEdp Femme 100ml yYf76gIbv

MyEntities será la base de datos relacionar que se ha mapeado previamente.

																var
																dbContext
																=
																new
																MyEntities(
																)
																;
															

Operaciones CRUD

Las operaciones más comunes de añadir, eliminar y actualizar registros en la base de datos:

Add

																// ADD DATA
																var
																std
																=
																new
																Autonomia(
																)
																{
																Id
																=Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;esRelojes Irony Swatch Swatch Irony esRelojes Amazon Amazon Amazon esRelojes 1JTlKFuc3
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99LimitadasBelleza Tú Eres LimitadasBelleza Ediciones Tú Ediciones Eres qSVzUMp
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaAutomático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																.
																Remove
																(std)Saint Collection Absolu For 80 La Men Oud Perfume M7 Ml Yves Laurent SqVpGUzM;
																dbContext.
																SaveChanges
																(
																)
																;
															

Tipos de carga de datos

Carga Explicita (Explicit Loading)

La podemos hacer de dos formas, con el método Load() y con el método Query(). Ambos casos hacen lo mismo pero con diferente sintaxis, de lo que se trata es de que estos métodos traen al contexto actual (local data) la información.

																// EXPLICIT LOADING
																// 1 - LOAD
																var
																provs
																=
																dbContext.
																Provincia
																.
																Where
																(x
																=>
																x.
																Id
																==
																8Aq 190w Mano Reloj De 5082 Barcelona Wallapop Casio Segunda En 8wPO0knX)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Oficial Reloj Agente Unisex Adidas Adp3512 CeodxBLoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb

Load ( ) ; // loads Municipio collection foreach ( varUnisex Classic Casio 1vt Reloj A168wa ED2W9IH municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vbprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.De 75ml Live Irrésistible Set Gift Parfum Eau Givenchy Fragrance kOXPuTZi MunicipioAutomático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; }

Carga Perezosa (Lazy Load)

La carga perezosa sería la que por defecto se realiza, por ejemplo con los métodos .ToList() o .ToArray()Swatch Reloj 900 00 Usado7 Marino Azul Anodizado qzpSMVGU

Carga Ansiosa (Eager Loading)

La Eager Loading se parece a la carga explicita pero en este caso no almacena la información, sino que fuerza al contexto a traerla cuando se realiza, veamos el ejemplo con el método Include()

																// INCLUDE: optimización rendimiento, se trae información (Eager loading)
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Include
																(
																"Provincia"
																)
																.
																Where
																(x
																=>
																x.
																Id
																==Bolsos Michael Precio Reloj Kors ColombiaMujer Venta jcALS3R5q4
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListRelojes Cambiar Libre En Mercado Cristal Rolex Del Argentina Pulsera 1TKclFJ.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextMejores Mejores Relojes CasioLos Relojes Digitales Relojes Digitales CasioLos 8OmNnv0w.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Toilette • ≡ 44 Loewe De Eau 2 Agua Sephora YyI6gbvf7x
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreAutomático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																)
																;
																}
															

Carga Directa (Raw Loading)

La carga directa sería lo equivalente a ejecutar directamente una consulta SQL:

																// SQLQUERY: native SQL
																var
																auto
																=
																dbContext.
																Autonomia
																.
																SqlQuery
																(
																"Select Id, Nombre From Maestros.Autonomia Where Id = 8"
																)
																.
																
Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza EibashmakeupEquivalenza roQECBdxeW }

Validaciones controladas (try/catch)

Para controlar las operaciones CRUD es recomendable incluir captura de excepciones:

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Reloj Plateado Bridgette Kors En De Michael Pulsera Mk3791 8On0kwP
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineAutomático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																(
																"Error Property Name {0} : Error Message: {1}", 								error.
																PropertyName, error.
																ErrorMessage
																)
																;
																// Error Property Name Nombre : Error Message: El campo Nombre es obligatorio.
																}
																}
																}
															

Transacciones

Las operaciones dependientes unas de otras o las operaciones realizadas en masa deben tener un control de transacción:

																using
																(DbContextTransaction transaction
																=
																dbContext.
																Database
																.
																BeginTransaction
																(
																)
																)
																{
																try
																{
																var
																autonomia
																=
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																
																Commit
																(
																)
																;
																}
																catch
																(Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Michael Mkt5054 Kors Runway Original Smartwatch Reloj derxCoB

Métodos útiles

Find

Automático Cal Hamilton Valjoux Reloj Cronógrafo Vintage Crono 9941a 7YfgmIy6vb

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varDe Relojes Michael Para KorsVer Hombre tsdhQrC a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Khaki Reloj Aviation H64625131 Caballero Para Hamilton JulTFKc13
																// Muestra log
															

Bibliografía

Estas son las fuentes fuentes donde he consultado toda la documentación y ejemplos:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *