Я новичок в WPF (и вообще в разработке приложений), и я хочу подключиться к моей базе данных и использовать это соединение для запроса его во всех классах Model. Я написал строку подключения в коде MainWindow заиспользовать одно соединение с базой данных во всех классах
public partial class MainWindow : Window
{
DBConnection db = new DBConnection();
public MainWindow()
{
InitializeComponent();
Connect();
}
...etc
А класс DBConnection выглядит следующим образом
class DBConnection
{
private OracleConnection connection;
private OracleCommand command;
private bool autoDisconnect;
public void Connect(bool autoDisconnect = true)
{
this.autoDisconnect = autoDisconnect;
try
{
if (connection == null)
{
connection = new OracleConnection("CONNECTION DETAILS");
}
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
}
catch (OracleException ex)
{ }
}
..... etc
, но я хочу, чтобы создать соединение и db
объект где-то так, что во всех моих модели могут просто вызвать классы DBConnection
без необходимости создавать новый объект каждый раз, когда
, например, вот модель
public class Authentication
{
string username;
string password;
public static bool Authenticate(string UserName, string Password)
{
db.SetSQL("SQL STATEMENT HERE");
db.ExecuteTransactions();
}
...etc
где SetSQL
и ExecuteTransactions
являются методы DBConnection класса
Итак, где и как я могу (просто) подключиться к базе данных, так что это будет постоянной на протяжении всего приложения? Его только одно окно с различными UserControls, так что я подумал, что было бы хорошо, чтобы соединить в коде MainWindow за
Неплохая идея. Соединения - это ценный ресурс, который нельзя хранить на протяжении всего срока службы приложения. Это может быть потенциально большой загрузочный слой на стороне вашего сервера. Они должны быть созданы, использованы, удалены как можно скорее. Поиск о пуле соединений для Oracle и вашего провайдера (Microsoft, Oracle или ...) – Steve
Если вы хотите придерживаться своей идеи после комментария @ Steve. Я бы посоветовал вам прочитать о двух вещах: синглтонах (просто на них у них есть конкретные варианты использования) и, что более важно, ключевое слово 'static'. – Sidewinder94
@Steve, я этого не знал! Так что я должен открыть соединение, когда оно должно быть использовано (например, проверка входа в систему) и закрыть его после входа (вошел в систему), а затем снова открыть/закрыть для каждого отдельного действия CRUD? – North