Вопрос

Я разделял переменные баз данных, используя следующий код:

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 объекты по требованию. Пул соединения гарантирует, что только одно физическое соединение с базой данных выполнено одновременно.

То, как у вас есть здесь, это не безопасно, если два человека делают запрос одновременно, например, вещи собираются получить В самом деле Винтовый).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top