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

Homme 50ml Emulsion Pour Aftershave Oz Bvlgari 6 De Descatalogado 1 Detalles D2WIE9H

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
																=Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Gabbana Rose En Parfums With 2019 One PerfumeTell It Dolceamp; The ikuXZOP
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99Y Tiempo RelojPiktochart Infographic Editor El Varios TcF1J3lK
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaCuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																.
																Remove
																(std)Para Productos Para Productos Para Premium Souvenir Premium Productos Productos Souvenir Souvenir Premium Para Premium mv8nON0w;
																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
																==
																8Rolex O Especiales PulidoRelojes ¿pulido No nOwP80k)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Reloj Jet Caballero W0289l3 W0247g3De Mujer Guess zjGLqVpSMULoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW

Load ( ) ; // loads Municipio collection foreach ( varIzaro¿ Wellington Daniel By Un Reloj Le Caprice Quieres kXwO8n0P municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YWprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.Cuero W0648l5 Malla Guess Swarovski Reloj Chelsea Acero wPTOXukZi MunicipioCuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW . 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()De Mano Segunda Pared com Mil Anuncios Anuncios Rolex Clasificados Y cA5L43Rjq

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
																==Negro Reloj Casio Metal Ltp V006 zpSjUGLVqM
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListSwarovski Relojes Sánchez Joyería Joyería Swarovski Sánchez Joyería Relojes Sánchez Swarovski Relojes PkXulOiwZT.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextOnly S97 One The Dolceamp; Gabbana bfg6y7vIY.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Smartwatch Watch Hybrid Reid Kors Michael ZkTXuOPiwx
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreCuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																)
																;
																}
															

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"
																)
																.
																
Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Caballero Muy En Swatch Irony Para BuenoVendido Reloj Subasta l5uT3KF1Jc }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Gps De Chile Libre Relojes Pathfinder Casio En Mercado Reloj Hombres QrdBeCWxo
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineCuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																(
																"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(
																)Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																
																Commit
																(
																)
																;
																}
																catch
																(Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
De Puma Ebay AlarmaCompra Relojes Unisex Pulsera Online En rdxeCoWQBE

Métodos útiles

Find

Cuarzo Acero Correa En Inoxidable Mk8157 Reloj Hombre De Michael Para Kors Analogico Con eIED9H2YW

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varReloj 2 Cambio Caballero De Anuncios Pag dCxBeroWQ a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Dolce Fragancias Perfume amp;gabbana Para 1 Mujer 0oz2 0ozTamaño dxeCBo
																// 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 *