@VanilaSpirit

Как вызвать/инициализировать репозиторий в классе модели?

У меня в Model>Cars.cs есть два класса:
public class Cars{
    public string Name { get; set; }
    public string Number { get; set; }
}


public static class CarsHelper
{
    public static string GetOrAddCarNumber(string name)
    {
        var context = new DBContext();
        var car = context.Cars.FirstOrDefault(x => x.Name == name);
        if(car == null)
            {
                context.Cars.Add(new Cars()
                {
                    Name = name,
                    Number = ""
                });
            }

            return Cars.Number;
    }
}


Раньше я писал var context = new DBContext();Но начал изучать паттерн репозиторий и переписываю проект под него и чет не понимаю как это сделать правильно) И вообще правильно ли так делать? В CarsHelper у меня пару методов где его нужно использовать.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Делаешь класс CarsRepository по типу
public class CarsRepository
{
    private readonly DbContext _dbContext;
    public CarsRepository(DbContext dbContext) => _dbContext = dbContext;

    public async Task<string> GetOrAddCarNumberAsync(string carName)
    {
        var car = await _dbContext.Cars.FirstOrDefaultAsync(x => x.Name == name);
        if(car == null)
        {
            car = new Car {
                    Name = name,
                    Number = ""
            };
            _dbContext.Cars.AddAsync(car);
            await _dbContext.SaveChangesAsync():
         }
         return car.Number;
    }
}

Но вообще EF и так реализует тебе паттер Repository, так что тебе достаточно будет написать только екстеншен-методы для DbSet-ов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы