Implementing the Repository Pattern in a .NET application involves creating interfaces for data access, concrete implementations, and utilizing dependency injection for loose coupling. Below is a simple example using C# and Entity Framework for data access:
1. Define Repository Interface:
// IRepository.cs
public interface IRepository<T>
{
IEnumerable<T> GetAll();
T GetById(int id);
void Add(T entity);
void Update(T entity);
void Delete(T entity);
}
2. Create Entity Class:
// User.cs
public class User
{
public int Id { get; set; }
public string Name { get; set; }
// Other properties
}
3. Implement Repository:
// UserRepository.cs
public class UserRepository : IRepository<User>
{
private readonly ApplicationDbContext _context;
public UserRepository(ApplicationDbContext context)
{
_context = context;
}
public IEnumerable<User> GetAll()
{
return _context.Users.ToList();
}
public User GetById(int id)
{
return _context.Users.Find(id);
}
public void Add(User entity)
{
_context.Users.Add(entity);
_context.SaveChanges();
}
public void Update(User entity)
{
_context.Users.Update(entity);
_context.SaveChanges();
}
public void Delete(User entity)
{
_context.Users.Remove(entity);
_context.SaveChanges();
}
}
4. Dependency Injection:
Configure dependency injection in your application, either using a built-in DI container (e.g., ASP.NET Core) or a third-party container.
// Startup.cs (for ASP.NET Core)
public void ConfigureServices(IServiceCollection services)
{
// Other configurations
services.AddScoped<IRepository<User>, UserRepository>();
services.AddScoped<ApplicationDbContext>(); // Assuming you have a DbContext named ApplicationDbContext
}
5. Use Repository in Business Logic:
// UserService.cs
public class UserService
{
private readonly IRepository<User> _userRepository;
public UserService(IRepository<User> userRepository)
{
_userRepository = userRepository;
}
public IEnumerable<User> GetAllUsers()
{
return _userRepository.GetAll();
}
public void AddUser(User user)
{
_userRepository.Add(user);
}
// Other business logic related to users
}
6. Usage in Controller or Service:
// UserController.cs (for ASP.NET MVC)
public class UserController : Controller
{
private readonly UserService _userService;
public UserController(UserService userService)
{
_userService = userService;
}
public IActionResult Index()
{
var users = _userService.GetAllUsers();
return View(users);
}
// Other controller actions
}
This example assumes the use of Entity Framework for database access, but you can adapt it to any data access technology. The key is to define a clear separation of concerns with interfaces, implementations, and dependency injection to make the application modular and maintainable.
#AbdurRahimRatulAliKhan #ARRAK #Code #Programming #CodeDescription #.NET #Viva #RepositoryPattern