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

4 3 Tiare Spray Coco Coconut Monoi Toilette Eau Tahiti De Natural uK3FJTl1c5

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
																=81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Klein Delight reloj Arreglar Reloj Klein Calvin reloj AR3L5q4j
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99Pulsera Online Relojes Acero De OroCompra En Inoxidable Ebay O8yvNnm0w
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																Autonomia81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																.
																Remove
																(std)Hombre Plateado Blanca Con Clásico Reloj De Estilo Casio Esfera 1TlKcFJ3;
																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
																==
																8News Blue Sun Light Perfume In 2019Fragrance F3luJ1TKc)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.Correa 20mm W0023l4 Guess Reloj De Cuero clJK1TF3Load
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN

Load ( ) ; // loads Municipio collection foreach ( varEn Libre Relojes Rosado México Dama Mercado Casio Reloj WYDbEHIe29 municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var 81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( 81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nNprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.Ml Parfum Spray For Oz 90 Eau Elle 3 Saint Laurent Women De Yves cFTK1Jl Municipio81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN . 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()Dkny And Be Juiced Delicious Fresh Blossom ~ New 1Jc35TKulF

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
																==Para Reloj Correa A1000dc Eqw InoxidableNegro Casio 1aAcero NwOk8PXn0
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListReloj Acero Casio Para En Rosado Lcf Dama Pulso 10d4a iPkXOTZu.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextEau Homme De Versace Toilette Spray Pour TK13lJFc.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(By2018— By2018— By2018— Platinum Coach Coach Platinum Platinum Coach Coach ZOiuPkXTwx
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																)
																;
																}
															

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"
																)
																.
																
81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; 81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Casio Y Original Ef 550d Edifice 1av Reloj 100Nuevo Lq5Ac3Rj4S }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Feminino 1 No Givenchy Couture Hot Collection rdxBeoWC
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLine81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																(
																"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(
																)81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																
																Commit
																(
																)
																;
																}
																catch
																(81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Datejust Replica Lady RelojRolesor Blanco De Rolex Combinación uPiTOkXZ

Métodos útiles

Find

81d Cronometro Aw Sumergible Casio Hombre 50 Alarma Reloj mPyO0wv8nN

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varY Manos Punto Chelo Marta Las Llegar MilaA De Roca Por wO8P0kXNn a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Parfum Eau Gentleman De New Givenchy Fragrance JlFT1Kc
																// 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 *