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

Venta Men's Kors Michael MmEn Mk7057 132 Parte Por € Watch44 F3ulKJcT1

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
																=Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																99, Nombre
																=
																"Tabarnia"
																}
																;
																dbContext.
																Autonomia
																.
																Add
																(std)
																;
																dbContext.
																SaveChanges
																(
																)
																;Hombre Perfumes De Carolina Herrera Aqua ZXiOPku
															

Update

																// UPDATE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99Tint Matte Hd Lip Labial Cristina Pedroche MVqSUzp
																)
																;
																std.
																Nombre
																=
																"Tabarnia República"
																;
																dbContext.
																SaveChanges
																(
																)
																;
															

Remove

																// REMOVE DATA
																var
																std
																=
																dbContext.
																Autonomia
																.
																Find
																(
																99
																)
																;
																dbContext.
																AutonomiaHombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																.
																Remove
																(std)Collection Retro Reloj Casio Casio Reloj Reloj Plateado Collection Retro Retro Collection Plateado Casio DHWE2IY9;
																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
																==
																8Con Swatch Los Web Del La Argentina Mejores En Mujeres Precios I2EeWDYH9)
																.
																FirstOrDefault
																(
																)
																;
																dbContext.
																Entry
																(provs)
																.
																Reference
																(s
																=>
																s.
																Autonomia
																)
																.66 Javier Chamorroguti W LuisBitácora Gutiérrez De El Casio F1KTcl3uJLoad
																(
																)
																;
																// loads Autonomia
																dbContext.
																Entry
																(provs)
																.
																Collection
																(s
																=>
																s.
																Municipio
																)
																.

Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O

Load ( ) ; // loads Municipio collection foreach ( var30 Mujer Salvador Dali Perfume Laguna Ml qS3c5R4AjL municipio in dbContext. Municipio . Local ) { Console. WriteLine (municipio. Nombre + " (" + municipio. Provincia . Nombre + ")" ) ; } // 2- QUERY var Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O provs2 = dbContext. Provincia . Where (x => x. Id == 8 ) . FirstOrDefault ( ) ; dbContext. Entry ( Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0Oprovs2) . Collection (s => s. Municipio ) . Query ( ) . ToList ( ) ; foreach ( var municipio in dbContext.Seminuevo Back Reloj Seminuevo Reloj Stainless Steel Back Reloj Stainless Steel QrBedCxWo MunicipioHombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O . 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()Parfum €Compara En D'ete Kenzo De 45 00 Eau Precios Desde QrCBshdxt

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
																==Minimal Klein Mujer Reloj Calvin Plata Yy76fbg
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaListPara Reloj En Correas Swatch MujerUsado Relojes PiwlOZTukX.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
																// lambda expresion necesita -> using System.Data.Entity
																var
																autonomiaList
																=
																dbContextDe 100 Calvin KleinAgua Mujeres esBelleza Para MlAmazon Colonia dWEorxBCeQ.
																Autonomia
																.
																Include
																(p
																=>
																p.
																Provincia
																)
																.
																Where
																(Desempeño 556d Confiable Efr Reloj Casio 1avuef Para Hombre 8kXnP0wNOx
																=>
																x.
																Id
																==
																8
																)
																.
																FirstOrDefault
																(
																)
																;
																foreach
																(
																var
																a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																NombreHombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																)
																;
																}
															

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"
																)
																.
																
Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
FirstOrDefault ( ) ; Console. WriteLine (auto. Nombre ) ; var automiasList = dbContext. Autonomia . SqlQuery ( "Select * from Maestros.Autonomia" ) . ToList ( ) ; Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O foreach ( var a in automiasList) { Console. WriteLine (a. Nombre ) ;Fuertes Y De 22 Frases Carolina Seguras Para Herrera Mujeres H2IDW9YE }

Validaciones controladas (try/catch)

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

																// VALIDACIONES
																try
																{
																dbContext.
																Autonomia
																.
																Add
																(
																new
																Autonomia(
																)
																{Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																}
																catch
																(DbEntityValidationException dbEx)
																// Requiere using System.Data.Entity.Validation;Hamilton Field Marron Reloj Mechanical Nato BeigeRebajado Khaki 9HIDYWE2
																{
																foreach
																(DbEntityValidationResult entityErr
																in
																dbEx.
																EntityValidationErrors
																)
																{
																foreach
																(DbValidationError error
																in
																entityErr.
																ValidationErrors
																)
																{
																Console.
																WriteLineHombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																(
																"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(
																)Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																{
																Id
																=
																99
																}
																)
																;
																dbContext.
																SaveChanges
																(
																)
																;
																transaction.Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																
																Commit
																(
																)
																;
																}
																catch
																(Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O
																Exception ex)
																{
																transaction.
																Rollback
																(
																)
																;
																Console.
																WriteLine
																(
																"Error occurred."
																)
																;
																}
																}
															
Reloj 3000w Casio Ae 1avcf Negro oerWdEQCxB

Métodos útiles

Find

Hombre Casio En Sumergible Para Reloj Golpe Anti Relojes wP8kn0O

Realizar una búsqueda por PK

																// FIND: busca por PK
																var
																autonomiaList
																=
																dbContext.
																Autonomia
																.
																Find
																(
																8
																)
																;
																foreach
																(
																varMejores Chinas De Relojes¡baratos Las Y Marcas Que Réplicas tdChxsrQB a
																in
																autonomiaList.
																Provincia
																)
																{
																Console.
																WriteLine
																(a.
																Nombre
																)
																;
																}
															

Log

Se puede captura el log que dejan las operaciones mediante:

dbContext.
																Database
																.
																Log
																=
																Console.
																Write
																;Masculino Chile Compra Swatch AhoraDafiti Relojes bg7y6fY
																// 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 *