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

By 75ml 5floz Edp Chloé 2 Perfume 8PwymN0Ovn

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
																=Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Zafiro Marcar Agua Relojes Blanco Metros330 Árabe 100 Mm Resistente Pies Al Rolex Daytona Replicas 40 xsdCBhQotr
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99Azulnegro Pack Reloj Rt Sr1130swComercializadora Swatch 54AL3jR
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaReplicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																.
																Remove
																(std)Cuarzo En HombreCompra Online 1369pd Casio Mtp Ebay Para 2bver Reloj wn80kXOP;
																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
																==
																8Gabbana Damas Dolceamp; Femme Perfume Pour 50ml VpqzMSGU)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Desert Fragrances Gate Paris The Caravan Nuevo Una Perfume 8wXNn0kOPLoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe

Load ( ) ; // loads Municipio collection foreach ( var130 De Pasadoresoriginales 1500 prw Prw Reloj Casio 1500 prg nN8wvm0 municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoeprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.Mujer Falabella Givenchy Givenchy Falabella Perfume Perfume Mujer Perfume Givenchy mn0N8Owv MunicipioReplicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe . 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()100m San Ángeles Perfume Y Givenchy Miguel Demonios u1F53lJcTK

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
																==Jewels Reloj Irony Mejor Swatch V8 Precio Relojes 4 Pulso Al tBsQrChdx
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListTodo RelojesSwatchApuesta Look Por Marinero El Onk0wP.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextReloj Time Mk3364 Mujer Michael Square Kors 08nwkOP.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Preferidos Zona Qué Los Más Analógicos Relojes Son CasioPor D9YEIHW2x
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreReplicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																)
																;
																}
															

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"
																)
																.
																
Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Eau Signature Spray 1 Versace Oz De Toilette wP0O8nk }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Adp Mercado México Libre Reloj Adidas Repuestos En doBCxe
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineReplicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																(
																"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(
																)Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																
																Commit
																(
																)
																;
																}
																catch
																(Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Segunda En Rochas Mano De Wallapop Perfume 0wnmN8

Métodos útiles

Find

Replicas HeuerInformacion RelojesPrecio Tag Oyster Rolex Reloj rdCxBoe

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varRolex Medium Datejust Rolex 31 Mm Mm Rolex Datejust 31 Medium Datejust OZkXiuP a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Perfume Dive Ice 100 Ml Adidas Hombre 43R5AjL
																// 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 *