Está en la página 1de 22
APRENDIZAJE Entity Framework Core Free unaffiliated eBook created from g Stack Overflow contributors. #entity- framework- Tabla de contenido Acerca de. Capitulo 1: Comenzando con Entity Framework Core. Observaciones. Examples Ariadiendo paquets al proyecto, Base de datos primero en Entity Framework Core con una biblioteca de clases y SQL Server. Paso 1 - Instalar NET Core. Paso 2 - Crear los proyectos Paso 3 - Instalacién de paquetes EF —- O. Paso 4 - Creando el modelo de base de datos. Finalmente. Pasando una cadena de conexién Modelar, consular y guardar datos. Modelo. Preguntando Guardando datos. Borrando datos Actualizacién de datos. ‘Capitulo 2: Actualizacién de una relacién de muchos a muchos. Introduccién Examples MVC POST Editar ejemplo ‘Capitulo 3: EF Core vs EF6.x. Observaciones. Examples Comparacin lado a lado Creditos, e No won 10 1 11 12 12 12 14 14 14 14 18 16 16 16 Acerca de You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: entity-framework-core Itis an unofficial and free Entity Framework Core ebook created for educational purposes. Alll the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official Entity Framework Core. The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners. Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to info@zzzprojects.com https://riptutorial.com/es/home Capitulo 1: Comenzando con Entity Framework Core Observaciones Entity Framework (EF) Core es una version ligera y extensible de la popular tecnologia de acceso a datos de Entity Framework. EF Core es un asignador relacional de objetos (O / RM) que permite a los desarrolladores INET trabajar con una base de datos utilizando objetos .NET. Elimina la necesidad de la mayoria del cédigo de acceso a datos que los desarrolladores generalmente necesitan escribir. Examples Afiadiendo paquetes al proyecto. Para agregar EntityFrameworkCore a su proyecto, actualice el archivo p= nuevas lineas en las secciones de «: =) (agregue jendencies Y "dependencies™: ( 22.0.0", Design": "1.0.0", nmicrosoft entityFraneworkcore.s ityFrameworkcore: nuicrosoft seype™: "buile Da to Tools": ( "microsoft entityPraneworkcore.Tools": *1,0.0-preview2-final™ No olvide ejecutar la dotnet vestore para descargar estos paquetes desde Internet. Si esté utiizando un RDBMS que no sea Microsoft SQLServer, reemplace con la versién correcta ( sqlite , Npgagl.fntityfraneworkCore.Postgresol U Otro: consulte la osoft .EntityFrameorkcore.salserv soft EntityFrameworkCo: documentacién del RDBMS para obtener el paquete recomendado). Base de datos primero en Entity Framework Core con una biblioteca de clases y SQL Server Bueno, me tomé cerca de un dia resolverlo, por lo que aqui estoy publicando los pasos que segui para hacer que mi Base de datos funcione por primera Vez en UN ciass Project (.weT Core) , COM una aplicacién web basica .NET. https://riptutorial.com/es/home 2 Aseguirese de que esta utilizando NET Core no DNX (ine: ¥ cons option yen eceating a tow exojoct) ~ S1NO descargar desde =u Si tiene problemas al instalar NET Core (el error es algo como Visual Studio 2015 Update 3 no estd instalado correctamente): puede ejecutar la instalacién usando el comando: [ stools. Pseview2.exe sx1P_vsu_cascx~1 ]- Lo que evitar que la instalacién realice el problema de Visual Studio Check Github New Project NET Framé Bt Class Library (NET Core) Reena joud eee a) ec Cree una nueva aplicacién web principal de ASP.NET -> Luego seleccione la aplicacién web en la siguiente pantalla https://riptutorial.com/es/home New Project at 4 Installed Pie ae 4 Visual C# Cay iy NET Core Et erry vr Solution NET Framew end Sort by Ne cei) Name tion (NET Fram (NET Frame https://riptutorial.com/es/home Add New Project Ta cen) Pec) Reus caer Da code anes ry .NET Core ole Application (NET Core) Sens Dern Deu Pane Location: Teper UINUO et) Abra su archivo project. json de Class Library y pegue lo siguiente, luego guarde el archivo: https://riptutorial.com/es/home Esto deberia restaurar los paquetes en re#erenc: La acs: Pe CER Cy Puede instalarlos usando Nuget Package Manager ejecutando los siguientes comandos en la Consola de Package Manager Nota: instale un paquete a la vez, si recibe un error después de instalar Luego cambia el contenido de tu seccién de frameworks a esto: https://riptutorial.com/es/home Paso 4 - Creando el modelo de base de datos Ahora, para generar la base de datos, ejecute el siguiente comando en la rackase Manager consol (NO olvide cambiar la cadena de conexidn a su base de datos) een Ceo Eereettie ap etesS SiO tL tec eee Tere aon Pee oe CL ee es Cees Ce eC cee RSC CM crac PM> Scaffold-DbContext “Server=192.168.0.211; Databas Para ello, debe agregar las mismas referencias que agregé a la Biblioteca de clases a la aplicacién web NET Asi que abre tu son Para la aplicacion web, Bajo cepencencies , agregue: y bajo toot» agregar: https://riptutorial.com/es/home 7 Después de hacer los cambios Guardar el archivo. Asi es como se ve mi proyecto,json Se ene Sey ead Luego, ejecute de nuevo el comando en la Consola del Administrador de paquetes contra la biblioteca de clases: Si atin no ha agregado la referencia de su biblioteca de clase aplicacién web, recibira este error iptutorial.com/es/home PM> Scaffold-DbContext “Server=192.168.0.211; Database ‘System.AggregateException: One or more errors occurred. (Could not find assembly Microsoft .EntityFrameworkCore.Design.OperationException: Could not find assembly| Pee ster ees Ue ee sts cana eet eee sto ee Cd CO eee re ery eeu Sra Se ge Cates SCM Co ae Co at System. Threading. Tasks. Task. ThrowIfExceptional (Boolean includeTaskCanceleg es ee Para resolver esta referencia adicional de la biblioteca de su clase a su aplicacion web: Poy es \pp Oe erie Name cane Esto deberia crear las Entidades en la Carpeta de Modelos, en la biblioteca de clases https://riptutorial.com/es/home 9 Pasando una cadena de conexion En mi caso aqui, tenemos una aplicacién Multi Tenant, en la que cada cliente tiene su propia base de datos, por ejemplo, Client_1, Client_2, Client_3. Asi que la cadena de conexién tenia que ser dinamica, Asi que agregamos una propiedad de cadena de conexién a un constructor, y la pasamos al Contexto en el método oncontiau public ClientContext ioe y lo usé asi: public vosa ennection () id= USER; password = PHD;*, clientId); https://riptutorial.com/es/home 10 Modelar, consultar y guardar datos. Modelo Con EF Core, el acceso a los datos se realiza utilizando un modelo. Un modelo esta formado por clases de entidad y un contexto derivado que representa una sesién con la base de datos, lo que le permite consultar y guardar datos. Puede generar un modelo a partir de una base de datos existente, codificar a mano un modelo para que coincida con su base de datos o usar EF Migrations para crear una base de datos a partir de su modelo (y evolucionar a medida que su modelo cambie con el tiempo). using Microsoft EntityPrameworkCore; using Systen.collect ione.Genericy pamespace Intro ( public class BloggingContext : DbContext i publi. publi Dbset Blogs { get; set! Dbset- Posts { get; set protected override void Onconti 1 cing (DbContextOpt ioneBuilder optionsBuiider) opt ionsBuilder. UseSqlServer (#*Server=(1ocaldb) \nssqllocaidb; Database=MyDatabase; Trusted Connecti , 1 public class Blog i public int Blogid { get? sets } public string Url { get? set; } public List Poste ( gety sety | } public class Fost i public int PostId { get? set; | public string Title | get; seti } public string Content ( get; set } publi. publi int Blogid ( gets set? } Blog Blog { get? set; } https://riptutorial.com/es/home 4 Preguntando Las instancias de sus clases de entidad se recuperan de la base de datos utilizando Language Integrated Query (LINQ). using (var dl fi = new Bloggingcontext ()) var blogs ~ db.5logs Where (b => b.Rating > 3) OrderBy (> => b.Url) sToList () Guardando datos Los datos se crean, eliminan y modifican en la base de datos utilizando instancias de sus clases de entidad. using (var fi = new BloggingContext ()) var blog ~ new Blog ( Url = "hetp://sample.con* 1 ab. Blogs.Add (blo8) + db. Savechanges (1; Borrando datos Las instancias de sus clases de entidad se recuperan de la base de datos utilizando Language Integrated Query (LINQ). using (var a ( = new BloggingContext ()) var blog = new Blog ( Url = *hetp://sample.com™ } db. Blogs .Attach (blog) db. Blogs .Renove (bl03) ib, GaveChanges ()7 Actualizacion de datos Los datos se actualizan en la base de datos utilizando instancias de sus clases de entidad. using (var db ~ new BloggingContext ()) fi https://riptutorial.com/es/home 12 var blog = new Blog { Uri = "http://sample.con* var entity = db.Blogs.Find (blog) entity-Uri = *http://sample2.con*; db, SaveChanges ()7 Lea Comenzando con Entity Framework Core en linea: https:/riptutorial.com/es/entity-framework- core/topic/3796/comenzando-con-entity-framework-core https:/riptutorial.com/es/home 13 Capitulo 2: Actualizacion de una relacion de muchos a muchos Introduccién Como actualizar una relacién de muchos a muchos en EF Core: Examples MVC POST Editar ejemplo ‘Supongamos que tenemos una clase de producto con varios colores que puede estar en muchos productos. public class Product i public int Productid { get; set; } public 1Collection ColorProducts { get; set } public class ColorProduct t public int ProductId { get? sety } public int Colerid { get; set 1 public virtual Color Color { gety set? ) public virtual Product Product ( get; set; } public class color t public int ColerTd { get; set; 1 public ICollection Col Products { get? set; } Usando esta extensién para hacerlo més facil: public static class extensions i public static void TryUpdateManyToMany (this DbContext db, TEnunerable current Ttens, IEnumerable nexrtons, Func getKey) where T ; class i ab. Set () .RenoveRange (current Items. Except (newItems, getKey))7 ab, Set () .AddRange (nexItens.Except (currentIzems, gotKey))7 : public static TEnmumerablect> Except (this 1Enunerab: other, Funcet, Tkey> getKeyFunc) i t> items, Tnunerablec> return items GroupJoin (other, getKeyFunc, getKeyFunc, (item, tempItems) => new { item, https://riptutorial.com/es/home 14 tonprtems 1) SelectMany(t => t.tenpItems.DefaultIfEmpty(), (t, temp) => new ( ty temp 1) Whore (t => Referencefquals (null, t.temp) || t.temp.Equals (default (1))) Select (t => t.t.item; La actualizacién de los colores de un producto se veria asi (un método de POST de edicién de mvc) [teprost] public TActionResult sdit (Productvm va) 1 if (Modelstate. Tevalia) i var model = db.Products Include (x => x.ColorProducts) FirstOrbefault (x => x.ProductId =: vm. Product .Product Id); ab, TryUpdateManyToMany (model .ColorProducts, vm.Colorsselected sSelect (x => new ColorProduct 1 colortd = x, ProductId = vm.Product Product id Vy x => x.colortay; ‘ob. Savechanges (7 return RedirectToAct ion ("Index"); , return View(vm)? public class Productvm t public Produet Product ( get; sets ) public IEnunerablecint> Colorsselected { get sets | El cédigo se ha simplificado tanto como puedo, sin propiedades adicionales en ninguna clase. Lea Actualizacién de una relacién de muchos a muchos en linea: https://riptutorial.com/es/entity- framework-core/topic/9527 /actualizacion-de-una-relacion-de-muchos-a-muchos https:/riptutorial.com/es/home 15 Capitulo 3: EF Core vs EF6.x Observaciones Para obtener las ultimas actualizaciones, consulte: Comparacidn de caracteristicas Examples Comparacién lado a lado La siguiente tabla compara las funciones disponibles (1) en EF Core y EF6.x. Esté pensado para ofrecer una comparacién de alto nivel y no enumera todas las funciones, ni intenta dar detalles sobre las posibles diferencias entre como funciona la misma funcién. eer Ona aie Modelado basico (clases, propiedades, etc.) Convenciones ‘Convenciones personalizadas Anotaciones de datos API fluida Herencia: Tabla por jerarquia (TPH) Herencia: Tabla por tipo (TPT) Herencia: Tabla por clase de concreto (TPC) Propiedades del estado de la sombra Llaves alternativas Muchos a muchos: con entidad de unién Muchos a muchos: sin entidad de union Generacién de claves: Base de datos Generacién de claves: Cliente Complejos / tipos de valor Si Si Si Si Si Si Si Si Si Si Si Si EF Core 1 si si Parcial Si Si si Si Si si Si Si https://riptutorial.com/es/home 16 eC a9 Datos espaciales si Visualizacién gréfica del modelo, si Editor grafico de arrastrar / soltar si Formato del modelo: Cédigo. si Sf Formato del modelo: EDMX (XML) si Modelo de ingenieria inversa de la base de datos: linea de er comando Modelo de ingenieria inversa de la base de datos: asistente de VS Si Actualizacién incremental del modelo desde la base de datos. si eC LINQ: consultas simples Estable Estable LINQ: consultas moderadas Estable Estabilizador LINQ: consultas complejas Estable En progreso LINQ: Consultas usando propiedades de navegacin Estable En progreso Generacién de SQL "bonita" Pobre Si Evaluacién mixta cliente / servidor si Cargando datos relacionados: Eager si si Cargando datos relacionados: perezoso si Cargando datos relacionados: Explicita si Consultas SQL sin procesar: tipos de modelos si si Consultas SQL sin procesar: tipos sin mapear si Consultas SQL sin procesar: componer con LINQ si Guardar cambios si si Seguimiento de cambios: Instanténea si St https://riptutorial.com/es/home eee ETC eae a ‘Seguimiento de cambios: Notificacion Si Si Acceso al estado rastreado si Parcial Concurrencia optimista Si Si Actas Si Si Lote de declaraciones Si Procedimiento almacenado Si ‘Compatibilidad con gréficos separados (N-Tier): API de bajo nivel Pobre Si Compatibilidad con gréficos separados (N-Tier): extremo a extremo Pobre Clee acuni . baie Migraciones Smee! API de creacién / eliminacién de bases de datos si [si Datos de semillas si Resiliencia de conexién si Enganches del ciclo de vida (eventos, intercepcién de comandos, 3 si Fremnermoner coos eenjercontee | servidor SQL si Si MysaL Si Solo pagado, no pagado préximamente (2) PostgreSQL si Si Oraculo Si Solo pagado, no pagado préximamente (2) SaLite Si Si Compacto de SQL Sie | ci DB2 Sie sh InMemory (para pruebas) si Azure Table Storage Prototipo https://riptutorial.com/es/home 18 eee eek red Eo rea Redis Prototipo DCR Or eee a WinForms. Si WPF Consola Si ASP.NET Si ASP.NET Core Xamarin Uwe. Notas al pie: (1): A partir de 2016/10/18 Si Si Si Si Si Proximamente (3) Si (2): Los proveedores pagados estan disponibles, se esta trabajando en los proveedores no pagados. Los equipos que trabajan en los proveedores no pagados no han compartido detalles pubblicos de la linea de tiempo, ete. (3): EF Core esta disefiado para funcionar en Xamarin cuando el soporte para NET Standard esta habilitado en Xamarin. Lea EF Core vs EF6.x en linea: https://riptutorial.com/es/entity-framework-core/topic/751 3/ef-core- vs-ef6-x https://riptutorial.com/es/home 19 Creditos Eee ails ‘Comenzando con 1 Entity Framework Core Actualizacién de una 2 relacién de muchos a muchos 3 EF Core vs EF6.x Community, Dawood Awan, Dmitry, hasan, natemcmaster, NovaDey, tmg, uTeisT Paw Ormstrup Madsen Frédéric, Ruud Lenders, uTeisT https://riptutorial.com/es/home 20

También podría gustarte