Я готовлюсь к своему последнему экзамену с C # WPF с использованием MVVM и задаюсь вопросом, каков наилучший способ использования нескольких типов соединений с базой данных для переключения между ними в представлении.
Это включает в себя наличие и т. Д. Oracle, mssql, mysql connections.
Я подумал о двух сценариях, чтобы сделать это:
A) Создать новый экземпляр подключения к базе данных, где он создает новое окно просмотра для отображения, чтобы пользователь могработа.
B) Создайте глобальный список доступа для переключения между соединениями по письменной команде.и т. д. «измените базу данных на xxxx», для текущего представления, которое они отображают.
То, что я ищу, это сценарий B), так что он более гибок для пользователя.Благодаря базе данных соединения уникальны.базы данных, я думаю сделать новый экземпляр пр.соединение как класс, и как-то сохранить его в виде списка неизвестного типа?
Во-вторых, как впоследствии получить доступ к этому списку в поле команды, найти имя базы данных на основе написанного имени базы данных и изменить тип соединения для текущего представления, которое они отображают.
В настоящее время у меня есть только класс с именем ConnectionString, в котором находятся различные функции. Теперь пришло время разделить его, чтобы он соответствовал результату B).
public class ConnectionString
{
//---------------------------------- constructoren
public ConnectionString()
{
ConnectionActive = false;
}
//---------------------------------- Global
public bool ConnectionActive { get; set; }
//---------------------------------- MSSQL
public SqlConnection MSconn { get; set; }
public string MSDataSource { get; set; }
public string MSInitialCatalog { get; set; }
public string MSPersistSecurityInfo { get; set; }
public string MSUserID { get; set; }
public string MSUserPassword { get; set; }
public void MSConnectorConnect(string _MSDataSource, string _MSInitialCatalog, string _MSPersistSecurityInfo, string _MSUserID, string _MSUserPassword)
{
MSconn = new SqlConnection(@"Data Source = " + _MSDataSource + "; Initial Catalog = " + _MSInitialCatalog + "; Persist Security Info = " + _MSPersistSecurityInfo + "; User ID = " + _MSUserID + "; Password = " + _MSUserPassword + ";");
//-- Connectionen
if (MSconn.State != ConnectionState.Open)
{
MSconn.Open();
MessageBox.Show("Connected to " + MSDataSource, "Data Merge Editor - Database connection",
MessageBoxButton.OK, MessageBoxImage.Information);
ConnectionActive = true;
}
else
{
MSconn.Dispose();
MSconn.Close();
MessageBox.Show("Disconnected from " + MSDataSource + " with user " + MSUserID, "Data Merge Editor - Database connection",
MessageBoxButton.OK, MessageBoxImage.Information);
ConnectionActive = false;
}
}
//---------------------- MYSQL
public MySqlConnection MysqlCon { get; set; }
public string MysqlConnectionName{ get; set; }
public string MysqlUserName { get; set; }
public string MysqlUserPassword { get; set; }
public string MysqlHostName { get; set; }
public void MSysqlConnectorConnect(string _MysqlConnectionName, string _MysqlUserName, string _MysqlUserPassword, string _MysqlHostName)
{
MysqlCon = new MySqlConnection(@"Server = " + _MysqlConnectionName + "; user id = " + _MysqlUserName + "; password = " + _MysqlUserPassword + "; database = " + _MysqlHostName + ";");
//-- Connectionen
if (MysqlCon.State != ConnectionState.Open)
{
MysqlCon.Open();
MessageBox.Show("Connected to " + MysqlHostName, "Data Merge Editor - Database connection",
MessageBoxButton.OK, MessageBoxImage.Information);
ConnectionActive = true;
}
else
{
MysqlCon.Dispose();
MysqlCon.Close();
MessageBox.Show("Disconnected from " + MysqlHostName + " with user " + MysqlUserName, "Data Merge Editor - Database connection",
MessageBoxButton.OK, MessageBoxImage.Information);
ConnectionActive = false;
}
}
public void SQliteConnector()
{
}
public void PostgreSQLConnector()
{
}
public void MsAccessConnector()
{
}
public void OracleConnector()
{
}
}
Результатслучай