repository migration
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WhiteLagoon.Application.Common.Interfaces;
|
||||
using WhiteLagoon.Domain.Entities;
|
||||
using WhiteLagoon.Infrastructure.Data;
|
||||
|
||||
namespace WhiteLagoon.Infrastructure.Repository
|
||||
{
|
||||
public class Repository<T> : IRepository<T> where T : class
|
||||
{
|
||||
private readonly ApplicationDbContext _db;
|
||||
internal DbSet<T> dbSet;
|
||||
public Repository(ApplicationDbContext db)
|
||||
{
|
||||
_db = db;
|
||||
dbSet = _db.Set<T>();
|
||||
}
|
||||
public void Add(T entity)
|
||||
{
|
||||
dbSet.Add(entity);
|
||||
}
|
||||
|
||||
public bool Any(Expression<Func<T, bool>> filter)
|
||||
{
|
||||
return dbSet.Any(filter);
|
||||
}
|
||||
|
||||
public T Get(Expression<Func<T, bool>> filter, string? includeProperties = null, bool tracked = false)
|
||||
{
|
||||
IQueryable<T> query;
|
||||
if (tracked)
|
||||
{
|
||||
query = dbSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
query=dbSet.AsNoTracking();
|
||||
}
|
||||
if (filter != null)
|
||||
{
|
||||
query = query.Where(filter);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(includeProperties))
|
||||
{
|
||||
//Villa,VillaNumber -- case sensitive
|
||||
foreach (var includeProp in includeProperties
|
||||
.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
query = query.Include(includeProp.Trim());
|
||||
}
|
||||
}
|
||||
return query.FirstOrDefault();
|
||||
}
|
||||
|
||||
public IEnumerable<T> GetAll(Expression<Func<T, bool>>? filter = null, string? includeProperties = null, bool tracked = false)
|
||||
{
|
||||
IQueryable<T> query;
|
||||
if (tracked)
|
||||
{
|
||||
query = dbSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
query = dbSet.AsNoTracking();
|
||||
}
|
||||
if (filter != null)
|
||||
{
|
||||
query = query.Where(filter);
|
||||
}
|
||||
if (!string.IsNullOrEmpty(includeProperties))
|
||||
{
|
||||
foreach (var includeProp in includeProperties
|
||||
.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
query = query.Include(includeProp.Trim());
|
||||
}
|
||||
}
|
||||
return query.ToList();
|
||||
}
|
||||
|
||||
public void Remove(T entity)
|
||||
{
|
||||
dbSet.Remove(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user