0

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

Я создал 1 базу данных asp.net, в которой я управляю ВСЕМИ пользователями. Пользователи сгруппированы в разные роли. (1 role = 1 agency office)

Затем - для каждой группы у меня есть другая База данных. В этой базе данных я управляю недвижимостью и клиентами данного офиса. (Эти базы данных имеют одинаковую структуру.)

В настоящее время я использую «пользовательский класс профиля ASP.NET», где я храню connectionstring для конкретной базы данных. Я создаю этот настраиваемый профиль, если пользователь входит в систему.

Теперь у меня есть проблема, если анонимный пользователь посещает страницу (есть общественный раздел). Я получаю ошибки в строке подключения, потому что нет «настраиваемого профиля», где мой функции могут читать ConnectionString

Мой Настраиваемый профиль класса выглядит следующим образом: Public Class UserProfile Inherits ProfileBase Public Shared Function GetUserProfile (имя пользователя As String) Как UserProfile Return TryCast (Создать (имя пользователя), UserProfile) End Function

Public Shared Function GetUserProfile() As UserProfile 
     Return TryCast(Create(Membership.GetUser().UserName), UserProfile) 
    End Function 

    <SettingsAllowAnonymous(False)> _ 
    Public Property role() As String 
     Get 
      Return TryCast(MyBase.Item("role"), String) 
     End Get 
     Set(value As String) 
      MyBase.Item("role") = value 
     End Set 
    End Property 


    <SettingsAllowAnonymous(False)> _ 
    Public Property UsersCustomConnectionString() As String 
     Get 
      Return TryCast(MyBase.Item("UsersCustomConnectionString"), String) 
     End Get 
     Set(value As String) 
      MyBase.Item("UsersCustomConnectionString") = value 
     End Set 
    End Property 


End Class 

Тогда я могу читать мои строки соединения, как

Dim currentprofile As UserProfile = UserProfile.GetUserProfile() 
Dim strcon As String = currentprofile.UsersCustomConnectionString 

Как я мог решить эту проблему? Или мне нужно использовать другой способ решения проблемы «много строк подключения»? если да, то как? (Я думаю, что сессия varaiables не будет работать)

Заранее спасибо

ответ

0

Это то, что мы делаем: положить в web.config запись для каждой строки подключения в разделе

<appSettings> 

, как это :

<add key="connection_string_key" value="YourDBServerConnectionString"/> 


Затем вы читаете значение из вашего класса доступа к БД, как это:

System.Configuration.ConfigurationManager.AppSettings[connection_string_key] 

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

Смежные вопросы