Срок службы FluentData IDbContext
Я использую FluentData ORM для.NET на своем уровне доступа к данным. Однако этот вопрос может относиться к большинству ORM.
Какова надлежащая продолжительность жизни IDbContext? Следует ли создавать новый контекст базы данных каждый раз, когда выполняется новый запрос к базе данных? У меня есть два сценария ниже, какое правильное использование? Обратите внимание, что я запрашиваю MS SQL, а также серверы MySQL. Итак, я хотел бы знать, есть ли какие-либо последствия для достижения максимального количества соединений. И да, я вызываю базу данных в несколько потоков. Являются ли оба сценария потокобезопасными?
Сценарий А:
Мой класс репозитория реализует IDisposable и содержит закрытую переменную типа IDbContext. Эта переменная создается в конструкторе и удаляется при удалении класса. В хранилище есть только один экземпляр контекста.
Сценарий Б:
Мой класс репозитория имеет закрытый метод, который возвращает новый экземпляр IDbContext. Всякий раз, когда другой метод обращается к базе данных, они вызывают этот метод, чтобы получить новый контекст базы данных.
1 ответ
Из официальной документации:
Когда вы должны избавиться?
- DbContext должен быть удален, если вы включили UseTransaction или UseSharedConnection.
- DbCommand должен быть удален, если вы включили UseMultiResult (или MultiResultSql).
- StoredProcedureBuilder должен быть удален, если вы включили UseMultiResult.
Во всех остальных случаях утилизация будет обрабатываться автоматически FluentData. Это означает, что соединение с базой данных открывается непосредственно перед выполнением запроса и закрывается сразу после его завершения.
http://fluentdata.codeplex.com/documentation
Надеюсь, это поможет кому-то.