щелкните правой кнопкой мыши по выбранным ячейкам, и вы войдете в специальное подменю для таких действий, где вы можете выбрать Копировать . к сожалению, вы должны установить расширение, которое позволяет вам выполнять такие действия (после нажатия на Скопировать появится это сообщение):
Ваш синглтон все еще выключен.
Что касается паттерна синглтона, см. Очень хорошее и подробное описание Джона Скита здесь: http: //www.yoda.arachsys .com / csharp / singleton.html
Использование Singleton для объекта SqlConnection - действительно очень плохая идея. Нет никаких причин делать это вообще.
Если вы пытаетесь избежать снижения производительности с помощью «new SqlConnection ()» или «connection.Open ()», имейте в виду, что на самом деле не наблюдается никакого снижения производительности из-за соединения пул происходит за кулисами. Пул соединений обрабатывает открытие / закрытие дорогих соединений. Не объект SqlConnection.
Вы выиграли Невозможно одновременно открыть несколько SqlDataReaders / Commands с соединением, что приведет к проблемам с блокировкой потоков, если вы попытаетесь совместно использовать один и тот же объект подключения с несколькими потоками.
Шаблон Singleton используется чаще всего и злоупотребляется шаблон и есть много побочных эффектов синглтона, которые вы можете не знать. Очень хороший разговор об опасностях синглетонов здесь http://www.youtube.com/watch?v=-FRm3VPhseI
Если нет другого способа получить соединение с БД, и если этот атрибут не может быть перезаписан, я бы сказал, да. Если это то, что вы делаете, вы, вероятно, зашли слишком далеко. Что делать, если база данных временно отключается и ваше приложение теряет соединение? Затем вам придется перезапустить приложение, чтобы оно могло снова использовать БД.
Я не могу ответить на этот вопрос, не видя некоторый код, я думаю. Если вы говорите, что в вашем приложении будет только один экземпляр подключения к БД, это может сработать, если вы можете гарантировать, что ваше приложение будет работать только в одном потоке (или, по крайней мере, все операции, использующие подключение к БД), поскольку вы можете '(насколько я знаю в любом случае) запустить несколько операций в параллель на одном и том же соединении.
Кроме того, если это означает, что ваше приложение будет поддерживать связь между использованиями, я бы посоветовал против этого. Соединения с БД - это ограниченные ресурсы на сервере БД, поэтому вы должны держать их открытыми только тогда, когда они необходимы, а затем закрывать их.
Само соединение не удовлетворяет критериям Singleton, потому что вы можете создать несколько экземпляров объекта подключения к базе данных. Одиночный объект по определению может быть создан только один раз.
Вы можете сделать SqlConnection частью Singleton, изменив свой пример следующим образом:
public sealed class SingletonDB
{
private static readonly SingletonDB instance = new SingletonDB();
private readonly SqlConnection con =new SqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ConnectionString);
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static SingletonDB()
{
}
private SingletonDB()
{
}
public static SingletonDB Instance
{
get
{
return instance;
}
}
public SqlConnection GetDBConnection()
{
return con;
}
}
Таким образом, SqlConnection используется ваш класс SingletonDB будет иметь один-единственный SqlConnection, поэтому следует шаблону Singleton.