Репозиторий, реализованный в EF Core: использовать весь DbContext или только DbSet?C#

Место общения программистов C#
Ответить
Anonymous
 Репозиторий, реализованный в EF Core: использовать весь DbContext или только DbSet?

Сообщение Anonymous »

Учитывая, что EF Core уже реализует шаблон репозитория () и единица работы (

Код: Выделить всё

DbContext
), могу ли я использовать DbSet прямо в моем репозитории вот так?

Код: Выделить всё

public class MyEfRepository : IMyRepository
{
private readonly DbSet _myModels;

public MyEfRepository(MyDbContext ctx)
{
_myModels = ctx.MyModels;
}

public MyModel FindById(Guid id)
{
return _myModels.Where(x => x.Id == id).SingleOrDefault();
}
}
И реализовать единицу работы следующим образом?

Код: Выделить всё

public class MyEfUnitOfWork : IMyUnitOfWork
{
private readonly MyDbContext _ctx;
public IMyRepository MyModels { get; }

public MyEfUnitOfWork(MyDbContext ctx, MyEfRepository repo)
{
_ctx = ctx;
MyModels = repo;
}

void Commit() => _ctx.SaveChanges();
}
Мне интересно, потому что каждое руководство, которое я читал, рекомендовало внедрить весь DbContext в репозиторий, а в таких методах, как FindById, получить доступ к DbSet через него. Поскольку единица работы зафиксирует все изменения, не имеет ли мой подход больше смысла? Или я чего-то не знаю?

Подробнее здесь: https://stackoverflow.com/questions/706 ... only-dbset
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»