Вы можете передать только один компонент для подключения. Таким образом, вместо этого вам придется выполнить два соединения:
const ConnectedListProducts = connect(mapStateToProps)(ListProducts)
const ConnectedAddProduct = connect(mapStateToProps)(AddProduct)
Поскольку вы можете иметь только один экспорт по умолчанию, вам придется использовать именованный экспорт в этом случае или разделить эти два компонента на два файлы.
Так как SqlConnection закрывается при расположении, я обычно использую этот синтаксис
using (SqlConnection conn = new SqlConnection())
{
// SqlCode here
}
Поэтому ключевое слово 'использования' так важно при использовании ADO.NET
using ( SqlConnection conn = new SqlConnection() )
{
...
}
Это вызывает тип детерминированной сборки "мусора" на объекте ADO.NET использование интерфейса IDispose.
Код базы данных Most использует много вложенных пунктов 'использования' с этой целью.
Существует ограничение соединения; если Ваши сбои приложения часто и не будут закрывать соединения автоматически, то новые запросы на установление соединения будут отклонены.
Тем не менее соединения отбывают срок через некоторое время, если они не закрываются.
Сборщик "мусора" в конечном счете завершит Ваш открытый объект соединения, но Вы не знаете, когда GC приходит в следующий раз. До тех пор у Вас могли бы закончиться соединения в Вашем объединении, если у Вас есть большой трафик, или это - общий SQL-сервер.
Почему бы не расположить его в наконец раздел Вашего блока попытки/выгоды?
finally
{
if (cn != null)
{
cn.Dispose();
cn = null;
}
}
Это должно быть сделано в методе веб-сервиса, очевидно.
У Вас могли закончиться соединения, доступные, если это происходит достаточно часто, необходимо использовать наконец везде, Вы выполняете команду для закрытия соединения.
Если приложение прекращает работать после того, как приблизительно один час, который мог бы определенно быть вызван соединениями, не являющимися, закрылся/расположил.
try
{
sqlCommandObject.Execute(); // this line will throw a timeout exception
}
finally
{
sqlConnectionObject.Close(); // this will execute no matter what happens
}