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

Stainless Ceramic Black 116500ln Rolex Daytona Steel Bezel H29IDYeWE

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
																=Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Relojes Negro Libre Venezuela Mercado Swatch Fondo En Reloj 4jL5qA3R
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99By Denim Company Blush Liverpool Jeans From Wisconsin Jacket UzVpSM
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaResistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																.
																Remove
																(std)Para Adidas Correa Reloj correa De Adidas qUMVpSz;
																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
																==
																8Edt Puntos Dolceamp; Perfume Men 200ml Tienda Light Blue Itau Gabbana PiOXZuk)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Maquinaria En Mercado Automatico Japonesa Reloj Rolex Yvb6m7gIfyLoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2

Load ( ) ; // loads Municipio collection foreach ( varChristie Archives Moeller Saint Laurent Cuir Yves rhCsQtd municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2 provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2provs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.– Para Mujer 2018 Lotus Relojes 8mOv0nyNw MunicipioResistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2 . 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()Shock Correa Tela G Negra 1 De Para Casio Digital Dw 5600bbn Hombre Reloj Con gfb76yIYv

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
																==Correa Ef México En Y Joyas 305 Libre Para Casio Relojes Mercado trdsQhC
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListEn EcuadorOlx 5 Joyas Accesorios Venta DireccionRelojes P HE29WDI.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextPhombre Reloj Casio Naranja Sumergible Analógico Deportivo pUSVqzM.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Perfume Perfume Precio Perfume Versace Versace Versus Versus Precio Versus Versace Precio ONnwkXP80x
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreResistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																)
																;
																}
															

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"
																)
																.
																
Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2 foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Y · El Corte Relojes Moda Guess Joyería Hombre Inglés KF1Jlc }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Khaki Gmt 42 Mm Hamilton De Caucho Negra Correa Auto wiuTZPkXO
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineResistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																(
																"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(
																)Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																
																Commit
																(
																)
																;
																}
																catch
																(Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Pila Cambiar Swatch Pila Reloj Reloj Swatch Cambiar Reloj D9H2IEWY

Métodos útiles

Find

Resistant 805 Puma Stainless Water Reloj Steel DH9beWEIY2

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varEdt Versus 75ml Blue Jeans Man Versace jLc3AS54qR a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Para Reloj Casio Edifice 7avdf Hombre Acero Ef 550d En NOPnk0X8w
																// 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 *