Repository Design Pattern | Full Explanation: C# and .NET

  Рет қаралды 7,849

Daniela Barazarte

Daniela Barazarte

Күн бұрын

Пікірлер: 31
@ingeniela
@ingeniela Жыл бұрын
Código completo del Repository Design Pattern para C# y .NET: // Interfaz del repositorio public interface IRepository where TEntity : class { Task GetAllAsync(); Task GetByIdAsync(TId id); Task AddAsync(TEntity entity); Task UpdateAsync(TEntity entity); Task DeleteAsync(TId id); } // Implementación del repositorio public class Repository : IRepository where TEntity : class { protected readonly DatabaseContext _context; public Repository(DatabaseContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); } public virtual async Task GetAllAsync() { try { return await _context.Set().ToListAsync(); } catch (Exception ex) { throw new Exception($"Couldn't retrieve entities: {ex.Message}"); } } public virtual async Task GetByIdAsync(TId id) { try { return await _context.FindAsync(id); } catch (Exception ex) { throw new Exception($"Couldn't retrieve the entity with id {id}: {ex.Message}"); } } public virtual async Task AddAsync(TEntity entity) { if (entity == null) { throw new ArgumentNullException(nameof(entity), "Entity must not be null"); } try { await _context.AddAsync(entity); await _context.SaveChangesAsync(); return entity; } catch (DbUpdateException ex) { throw new Exception($"Error saving entity: {ex.InnerException?.Message ?? ex.Message}"); } } public virtual async Task UpdateAsync(TEntity entity) { if (entity == null) { throw new ArgumentNullException(nameof(entity), "Entity must not be null"); } try { _context.Update(entity); await _context.SaveChangesAsync(); return entity; } catch (DbUpdateException ex) { throw new Exception($"Error updating entity: {ex.InnerException?.Message ?? ex.Message}"); } } public virtual async Task DeleteAsync(TId id) { var entity = await GetByIdAsync(id); if (entity != null) { _context.Remove(entity); await _context.SaveChangesAsync(); } } }
@luisalbertoivetta1731
@luisalbertoivetta1731 Жыл бұрын
Muy buena explicación.
@ingeniela
@ingeniela Жыл бұрын
Muchas gracias 🤗⭐
@gretherestupinanpadron704
@gretherestupinanpadron704 13 күн бұрын
Acabo de entender en 15 minutos con 27 lo que con un profesor no pude en todo un semestre jj.Muchísimas gracias Ingeniela,te apoyo desde Cuba.
@javierbullon3064
@javierbullon3064 10 ай бұрын
Buen video, gracias!
@karinalejandrolugogutierre5395
@karinalejandrolugogutierre5395 10 ай бұрын
Muy buen Video.
@ingeniela
@ingeniela 10 ай бұрын
A la orden
@penalosacorona9254
@penalosacorona9254 11 ай бұрын
Super, que buen video, me queda una duda. Las validaciones, tipos de campos, validar la integridad de la información, validar los campos obligatorios, eso se hace en la capa app service ?
@ingeniela
@ingeniela 11 ай бұрын
Si, en general en la capa de AppService puedes colocar las validaciones para que antes de entrar a la capa de Repository, se compruebe que son datos válidos.
@YoungHWN
@YoungHWN 7 ай бұрын
Que duro!
@MAvMax22
@MAvMax22 Жыл бұрын
Un par de preguntas. Tu logica de aplicación debe ir en la clase TicketAppService? es decir, supongamos que ademas de guardar el ticket actualizas otra tabla y haces validaciones sobre informacion de otras tablas (como parte del proceso), eso se haria en esa clase? y tu clase TicketsController solo expone los metodos de TicketAppService?
@ingeniela
@ingeniela Жыл бұрын
Si, estás en lo correcto. En el AppService se colocan las validaciones importantes para las entidades y luego en el Controller se exponen los métodos del AppService.
@FoxStrayer
@FoxStrayer Жыл бұрын
Disculpa-...que significa la palabra Where en la zona donde se encuentra la interfaz???
@ingeniela
@ingeniela Жыл бұрын
Si te refieres a lo del "IRepository where TEntity : class", el where es una palabra clave para definir el tipo de parametro "TEntity" lo que significa que los métodos de IRepository deben poder instanciar y manipular objetos del tipo TEntity
@xancliman
@xancliman 7 ай бұрын
hola, dónde puedo encontrar el proyecto completo, si es posible?
@ingeniela
@ingeniela 7 ай бұрын
Estaré subiendolo pronto a mi repositorio de GitHub: github.com/ingeniela/DetectaLaLogica
@angelriosblancas4515
@angelriosblancas4515 7 ай бұрын
Y donde estan los procedimientos almacenados ? ... necesito registrar data en mas de una tabla a la vez
@hermidesmedina6123
@hermidesmedina6123 Ай бұрын
Mi pregunta es la siguiente es obligatorio utilizar repository en los nombres? o solo lo utilizas en los ejemplos, disculpa mi ignorancia por favor solo necesito verificar si es estado utilizando mal repository
@ingeniela
@ingeniela Ай бұрын
Nop, no es obligatorio
@eduardofuentes8673
@eduardofuentes8673 Жыл бұрын
Hola , antes que nada muchísimas gracias por la explicación es super buena , queda muy claro de manera rápida y sencilla , mi pregunta es si este patrón de diseño es como si tuvieramos una arquitectura en 3 capas pero utilizando los principios SOLID ?
@ingeniela
@ingeniela Жыл бұрын
Sip, ya que el patrón de diseño de repositorio tiene una capa de aplicación y otra de datos, es similar a una arquitectura en tres capas que utiliza los principios SOLID.
@cris8815
@cris8815 9 ай бұрын
Muy buen tutorial, podrias mostrar la interfaz que implementa la clase TicketAppServices ?
@ingeniela
@ingeniela 9 ай бұрын
// Interfaz del repositorio public interface IRepository where TEntity : class { Task GetAllAsync(); Task GetByIdAsync(TId id); Task AddAsync(TEntity entity); Task UpdateAsync(TEntity entity); Task DeleteAsync(TId id); }
@eduardomxm
@eduardomxm 11 ай бұрын
El proyecto como tal, no lo tienes en un repositorio para analizar?
@ingeniela
@ingeniela 11 ай бұрын
Pronto lo subiré a mi repositorio de GitHub, gracias por la idea ⭐
@gabyg9905
@gabyg9905 7 ай бұрын
Me encantó tu explicación. Sin duda se nota to dedicación y trabajo
@zeta_jersson7048
@zeta_jersson7048 7 ай бұрын
muy buen videa, se te agradece por compartir tus conocimientos, tengo una dura, MVC es un patron de diseño o un patron de arquitectura?
@ingeniela
@ingeniela 7 ай бұрын
Se puede decir que es ambos
@eliassilva7228
@eliassilva7228 3 ай бұрын
Excelente video..
@ismaelpereyra176
@ismaelpereyra176 10 ай бұрын
Gracias! ahora lo tengo mas claro 💟
@ingeniela
@ingeniela 9 ай бұрын
Muchísimas gracias!
RESTful API with .NET Core (.NET 7) - Full Course for Beginners
2:32:39
DotNetMastery
Рет қаралды 189 М.
ПРИКОЛЫ НАД БРАТОМ #shorts
00:23
Паша Осадчий
Рет қаралды 6 МЛН
escape in roblox in real life
00:13
Kan Andrey
Рет қаралды 91 МЛН
How do Cats Eat Watermelon? 🍉
00:21
One More
Рет қаралды 10 МЛН
La Magia 🧙‍♂️ del Patrón Repositorio en C#
12:55
NetMentor
Рет қаралды 13 М.
Mejora la Calidad de tu Código utilizando Repositorios
11:24
CodelyTV - Redescubre la programación
Рет қаралды 26 М.
Triton Conference 2024: Morning Session
1:37:43
Triton
Рет қаралды 614
Repository Pattern with C# and Entity Framework, Done Right | Mosh
26:24
Programming with Mosh
Рет қаралды 872 М.
INYECCION De DEPENDENCIAS En Menos de 10 MINUTOS | Ejemplos C#
6:23
3° Clase de Estructura de Datos (Arreglos),(26/08/24)
2:26:40
Clases Grabadas
Рет қаралды 3
Learn Blazor: Build an Inventory Management System in .NET 8
2:17:34
Repository Pattern en 10 minutos 📦
10:22
The Bug
Рет қаралды 4,2 М.
Евгений Борисов - Spring-потрошитель, часть 1
1:04:27
JPoint, Joker и JUG ru
Рет қаралды 518 М.
ПРИКОЛЫ НАД БРАТОМ #shorts
00:23
Паша Осадчий
Рет қаралды 6 МЛН