Установите имя базы данных при использовании oData и EF - PullRequest
0 голосов
/ 21 июля 2011

У меня есть сценарий, в котором несколько баз данных имеют одинаковую схему, и клиенты могут выбирать, какую базу данных запрашивать.Есть ли способ включить имя базы данных при выполнении запроса oData от silverlight, чтобы он мог повторно использовать те же сервисы?

Допустим, у меня этот запрос (см. Ниже) выполняется на клиенте (silverlight / wp7), как мне заставить этот запрос работать с базой данных, которую пользователь выбрал, когда они впервые запустили приложение?

private DataServiceCollection _employees;
private void LoadEmployees ()
{
DataModelContainer dmc = new DataModelContainer (новый Uri ("http://localhost:63832/DataService.svc"));
var query = (из e в dmc.Employees
)где e.StartDate == BaseDate выберите e);
_employees = new DataServiceCollection (dmc);
_employees.LoadCompleted + = new EventHandler (_employees_LoadCompleted);
_employees.LoadAsync (1013);

Ответы [ 2 ]

0 голосов
/ 26 июля 2011

Вот что я придумала: AddQueryOption добавит значение в строку запроса, в моем случае - ключ базы данных, с которой я хочу выполнить запрос.

var query = (из e в dmc.Employees.AddQueryOption ("dbKey", SelectedDB)
где e.StartDate == BaseDate выберите e);
_employees = new DataServiceCollection (dmc);
_employees.LoadCompleted + = новый EventHandler (_employees_LoadCompleted);
_employees.LoadAsync (запрос);
}

В классе DataService я переопределяю метод CreateDataSource и возвращаю DataModelContainer с правильной строкой соединения для запроса
защищенное переопределение DataModelContainer CreateDataSource () {
DataModelContainer dmc = new DataModelContainer (GetConnectionString ());
возврат DMC;
}
приватная строка GetConnectionString ()
{
string dbKey = HttpContext.Current.Request.Params ["dbKey"]. ToString ();
string cnnKey = "DataModelContainer" + dbKey;
return ConfigurationManager.ConnectionStrings [cnnKey] .ToString ();
}

0 голосов
/ 21 июля 2011

Это следует делать в файлах конфигурации с помощью элемента connectionstrings.

Например:

<configuration>
<!-- Other configuration settings -->

<connectionStrings>

  <add name="Sales" 
       providerName="System.Data.SqlClient"
       connectionString= "server=myserver;database=Products;uid=<user name>;pwd=<secure password>" />

  <add name="NorthWind" 
       providerName="System.Data.SqlClient" 
       connectionString="server=.;database=NorthWind;Integrated Security=SSPI" />

</connectionStrings>

Для динамического извлечения строк подключения на основе строки запроса от клиента:использовать класс ConfigurationManager.Следующие ссылки помогут вам в этом отношении:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx

www.dotnet-guide.com / configurationmanager-class.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...