<<< RP CODE e.g.

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