170 похожих чатов

Инджектить SqlConnection через DI - это плохая идея? А если

все-таки инджектить, то как потом использовать using? Или тогда не использовать using? И регистрировать SqlConnection в DI-контейнере, то как Singleton или не как Singleton?

8 ответов

12 просмотров

это подозрительная идея, да. Зачем там инжект, ты подменять будешь коннекшн? Если для тестов, то сомневаюсь что в классе, который активно юзает SqlConnection можно будет чот кроме интеграционных тестов написать над ин-мемори бд или подобным

Valeriy-Osipov Автор вопроса
Ayrat Hudaygulov
это подозрительная идея, да. Зачем там инжект, ты ...

Почему подозрительная? Не для тестов. Сейчас есть ConnectionFactory, где каждый раз делается new SqlConnection, который потом используется в using. Может быть выпилить ConnectionFactory и зарегистрировать SqlConnection'ы в DI-контейнере?

Valeriy Osipov
Почему подозрительная? Не для тестов. Сейчас есть ...

если не для тестов зачем ты инжектишь? ради инжекта?) interface IOrderStorage GetOrder: OrderId -> Async<Order> CreateOrder: OrderCreate -> Async<OrderId> type OrderPostgreStorage(postgreCredentials) = let connection = CreatePostgreConnection(postgreCredentials) interface IOrderStorage with member GetOrder orderId = conn.Execute … … псевдо фшарпокод Вот тут инжектится то что надо классу для работы, тестировать его проще простого - кинул креденшлы до постгре бд, потестил. Хоть в докере подымай сам, хоть в тестконтейнере, хоть в локалхосте Всем остальным интерфейс, пусть мокают если надо. Зачем инжектить просто так?

Valeriy-Osipov Автор вопроса
Ayrat Hudaygulov
если не для тестов зачем ты инжектишь? ради инжект...

нет, не ради инджекта, а для оптимизации - чтобы каждый раз не пересоздавать SqlConnection

Valeriy Osipov
нет, не ради инджекта, а для оптимизации - чтобы к...

в адо.нет уже встроен пулинг, не надо заниматься бесполезной оптимизацией...

Valeriy-Osipov Автор вопроса
Ayrat Hudaygulov
в адо.нет уже встроен пулинг, не надо заниматься б...

Да я и рад бы, но возникает такой Exception: The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. Утечки connection'ов я проверил вроде бы нет

Valeriy Osipov
Да я и рад бы, но возникает такой Exception: The t...

так вроде бы или нет?) Боюсь у тебя проблема

Valeriy-Osipov Автор вопроса
Ayrat Hudaygulov
так вроде бы или нет?) Боюсь у тебя проблема

Вроде бы - потому что я просто глазами код просмотрел. Везде connection'ы используются через using

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта