Я долго искал стековый поток и не нашел решения, подходящего для моей ситуации, поэтому я спросил здесь.получить доступ к другой базе данных SQL Server по имени субдомена.
В соответствии с запросом URL субдомина для определения доступа к другой базе данных.
- prj1.test.com prj1---> использовать prj1_DB
- prj2.test.com prj2 использовать prj2_DB
Я не смог найти более подходящую практику для решения проблемы.
Мое интуитивное решение:
когда приходит запрос url, получить поддомен url, получить строку соединения db поддомена, хранящуюся в главной базе данных, передав строку подключения в DAL для получения данных.
Index.aspx.cs
DataTable dt = ProjectObject.GetProjectIndexNotice(new object[] { 0, CurrentProject.DbConnectionString });
ProjectObject.cs
public static DataTable GetProjectIndexNotice(object[] param)
{
ProjectDLC obj = new ProjectDLC();
return obj.GetProjectIndexNotice(param);
}
ProjectDAL.cs
public DataTable GetProjectIndexNotice(object[] param)
{
return base.GetDataTableFromDatabase(param, "NEMP_GetProjectIndexNotice");
}
DALBase.cs
DataBase db = new Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase(CurrentProject.DbConnectionString);
Я хочу найти лучший способ решения этой проблемы.
Решение, которое я использовал выше:
- получить dbConnectionString из основной БД,
- , передав его через Index.page -> BusinessObject Layer -> Уровень DAL
Это так плохо, что передача строки подключения к БД со страницы пользовательского интерфейса на уровень DAL.
Есть идеи?
Обновление 1: Что я действительно хочу, так это: не передавать строку соединения с БД из пользовательского интерфейса на уровень DAL.
Я хочу найти решение, которое не передает БД connstr из пользовательского интерфейса вDAL линейно.
Есть ли в asp.net какой-то шаблон для совместного использования некоторой переменной для слоя пользовательского интерфейса и слоя DAL?
Обновление 2: , если я сохранил информацию о базе данных проекта в xmlфайл или в основной базе данных, это выглядит так:
это часть значения ключа для проекта.вот вопрос, я получаю все значения в основной БД или в XML-файле. Как получить ключ, когда мне необходимо получить доступ к БД на уровне DAL ?
на уровне DAL, как получить правильный ключ для запроса URL-адреса currnet?
вернемся к вышесказанному, передайте ключ от UI к DAL.этого я хочу избежать.
реальная проблема в том, что я могу получить ключ из URL-запроса на уровне пользовательского интерфейса и получить значение этого ключа на уровне DAL.но есть разрыв между двумя слоями, как преодолеть этот разрыв?