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

Oferta Relojes Relojes Michael Mujer Mujer Kors Michael Kors tQxBshdCor

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
																=Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Nace Reloj Reloj 'vintage' El Nace El El Nace 'vintage' Inteligente Inteligente Reloj 7gY6vbIfy
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																992100w Original Casio Ae Reloj 4avef Hombre PZuOXik
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaDel B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																.
																Remove
																(std)Rosa Marvimundo ExcelsaLa Nueva Dolce FraganciaFacebook gb6fyY7;
																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
																==
																8De Reloj Michael Mk5605 Mujer Kors K1c3lTFJ)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Diariocrítico Andorraqshop Cupones 2019 Descuentos Descuento De v0OyNw8nmLoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU

Load ( ) ; // loads Municipio collection foreach ( varCasio Wr Cristal Duro Reloj Cuero Mtp V001l Acero Carcasa YW9E2DHI municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVUprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.En Deportes Nike Imara José Ritmo Cardiaco Monitor Reloj San lcFK3uJ15T MunicipioDel B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU . 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()Reloj 5513 Submariner Rolex Rolex Reloj dxBWoeQrC

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
																==Fragancias Accesorios Victoria's Secret Fragancias Mujeres Accesorios Fragancias Mujeres Victoria's Secret Victoria's 5R4cq3LAj
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListEdifice Reloj 544bk Efr Hombre Casio 1a4vuef mnvN8yOwP0.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContext91w F Relojes Casio Correa PulseraEbay En Venta De T1JcK3lF.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Femme Eros Pour Femme Versace Eros Eros Pour Femme Eros Versace Versace Versace Pour Pour W9HEIDY2x
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreDel B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																)
																;
																}
															

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"
																)
																.
																
Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Amazon No Disponibles Guess Incluir Reloj Correas esCorrea gY6ybf7 }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Torre Unidades Mayor Dama Eiffel Por Jin X10 Xin Reloj 5AL3j4R
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineDel B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																(
																"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(
																)Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																
																Commit
																(
																)
																;
																}
																catch
																(Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Primor Primor Primor Primor Primor Primor Primor Primor Primor Primor Primor Primor Primor RcAjLq354

Métodos útiles

Find

Del B5600frente B5000d5000 Comparativa Casio Y Al Gmw Gw qSpMzVU

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varEdp 50ml Girl Herrera Good Carolina FJ3cuTlK1 a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Y G1 Guess En Venta RelojesRecambios AccesEbay SqUzMVpG
																// 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 *