Подключение к базе данных в серверном элементе управления ASP.NET - PullRequest
1 голос
/ 03 августа 2010

Как следует из этого вопроса Я создаю собственный серверный элемент управления для размещения на главной странице Sharepoint 2010.

Идея заключается в том, что он будет отображать меню, динамически заполняемое из базы данных.

Поскольку это серверный элемент управления, я собираю его в dll, но натолкнулся на небольшую загвоздку. Поскольку он должен подключаться к базе данных, мне нужно где-то хранить строку подключения (и иметь возможность ее конфигурировать на основе целевой конфигурации (dev / test / prod).

Я намеревался предоставить пользователю Entity Framework в качестве моего ORM, но я не уверен, где должна храниться строка подключения. В обычном веб-приложении ASP.NET оно помещается в web.config, но это серверный элемент управления во внешней DLL.

Где хранить строку подключения, чтобы я мог просто собрать и развернуть сборку, содержащую серверный элемент управления.

EDIT:
Перед публикацией вознаграждения я пытался использовать встроенный ресурсный XML-файл для хранения строки подключения, и, хотя это работает, мне любопытно, является ли это наилучшей практикой / лучшим способом?

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

Я бы не рекомендовал подключать элемент управления к базе данных. Вместо этого пользователь элемента управления должен подключиться к базе данных, а затем привязать данные к элементу управления.

0 голосов
/ 06 августа 2010

Строка подключения должна быть помещена в любое приложение, которое используется .dll для своего файла конфигурации. Поскольку это ASP.NET, файл web.config подойдет. Когда вы вызываете какие-либо методы из библиотеки DLL, вы должны передать ей строку подключения в виде объекта:

MyConnectionString
{
    get
    {
        return ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString
    }
}

использование

using(SqlConnection conn = new SqlConnection(MyConnectionString))
{
    //other stuff here. Like making your command object, or passing it.. etc.)
}
...