Хорошо, спасибо.

далось реализовать небольшой классный блок работы для работы с сущностью.

Я придумал ..

public class UnitOfWork : IUnitOfWork
    {
        private Database _database;
        private IDatabaseFactory _databaseFactory;

        private DbTransaction transaction;

        public UnitOfWork(IDatabaseFactory databaseFactory)
        {
            _databaseFactory = databaseFactory;
            _database = Database;

            transaction = _database.Database.Connection.BeginTransaction();
        }

        public Database Database
        {
            get { return _database ?? (_database = _databaseFactory.Get()); }
        }

        public void Dispose()
        {
            try
            {
                _database.SaveChanges();
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
            }
        }
    }

Я уверен, что все завидуют этой единице работы сейчас. (Шучу)

Но у меня есть небольшая проблема дизайна в этом слое обслуживания.

public class JournalService : IJournalService
    {
        IJournalRepository _journalRepository;

        public JournalService(IJournalRepository journalRepository)
        { 
            _journalRepository = journalRepository;
        }

        public void AjouterJournal(Journal j)
        {
           [B]using (IUnitOfWork uow = new UnitOfWork())[/B]
            {
                var journal = new Journal();
                journalRepository.AddJournal(journal);

            }
        }
    }

Проблема в том, что единице работы нужна инъекция базы данных, поэтому я не могу создать ее экземпляр. Я не могу предоставить единицу работы непосредственно на уровне обслуживания, потому что это не имеет смысла, поскольку единица работы должна быть одноразовой.

И поскольку я использую репозиторий для добавления своих материалов, нет необходимости напрямую обращаться к единице работы, сохранение будет происходить автоматически, когда оно все равно будет утилизировано.

Я мог бы внедрить IDatabaseFactory в свой сервисный слой, но идея в том, чтобы не использовать его там. На самом деле сервисный уровень не должен знать об этом.

Как насчет фабрики UnitOfWork?

Любые идеи или предложения о том, как я могу это исправить?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос