Правильный метод обмена вариантами базы данных (ASP.NET)
-
30-09-2019 - |
Вопрос
Я разделял переменные баз данных, используя следующий код:
Namespace DataAccessVariables
Public Class Vars
Public Shared s As String
Public Shared con As String = WebConfigurationManager.ConnectionStrings("Dev").ToString()
Public Shared c As New SqlConnection(con)
Public Shared x As New SqlCommand(s, c)
End Class
End Namespace
Затем я импортирую это в мой проект, как это:
Imports DataAccessVariables.Vars
Когда я проверяю сайт с fxcop, я получаю это сообщение:
Error, Certainty 90, for StaticHolderTypesShouldNotHaveConstructors
{
Target : DBVars (IntrospectionTargetType)
Resolution : "Remove the public constructors from 'Vars'."
Help : http://msdn2.microsoft.com/library/ms182169(VS.90).aspx (String)
Category : Microsoft.Design (String)
CheckId : CA1053 (String)
RuleFile : Design Rules (String)
Info : "Instances of types that define only static members
do not need to be created. Many compilers will automatically
add a public default constructor if no constructor
is specified. To prevent this, adding an empty private
constructor may be required."
Created : 2010/04/20 01:25:16 PM (DateTime)
LastSeen : 2010/04/21 07:17:46 AM (DateTime)
Status : Active (MessageStatus)
Fix Category : Breaking (FixCategories)
}
Если я удалю «публичный общий доступ» из деклараций, то переменные не подняты на мои страницы. Может кто-нибудь показать мне правильный способ поделиться им?
Спасибо много, Фил.
Решение
Эта ошибка не говорит вам, чтобы удалить общедоступные общие переменные. Вместо этого он позволяет вам знать, что можно создать новый экземпляр вашего экземпляра Vars
класс, хотя это включает только Shared
члены. Чтобы разрешить проблему, определить частного конструктора:
Private Sub New()
End Sub
Это предотвратит любой код, создающий экземпляр Vars
класс за пределами самого класса.
Другие советы
Это то Только код в вашем классе?
Кроме того, вы не должны создавать глобальный (статический) SqlConnection
. Отказ Просто создайте SqlConnection
а также SqlCommand
объекты по требованию. Пул соединения гарантирует, что только одно физическое соединение с базой данных выполнено одновременно.
То, как у вас есть здесь, это не безопасно, если два человека делают запрос одновременно, например, вещи собираются получить В самом деле Винтовый).