C# 什么';在WPF中维护MySQL连接的最佳方法是什么?

C# 什么';在WPF中维护MySQL连接的最佳方法是什么?,c#,mysql,wpf,client,mvvm-light,C#,Mysql,Wpf,Client,Mvvm Light,我正在使用C#+WPF+MvvmLight编写一个C/S客户端。在这个程序中,我将连接到MySQL数据库以查看和修改表。我知道如何在C#中连接到MySQL数据库,我想知道的是如何维护与MySQL dbs的连接。就我而言,我介绍了两种方法: 声明一个全局MySqlConnection类型变量 将我的连接字符串保存在配置文件中,并在需要时加载它 这两种方法的优点和缺点是什么?任何其他的解决方案都会很受欢迎。有不同的处理方法。WPF中最常见的可能是让viewmodel处理对数据库(它是模型的一部分

我正在使用
C#+WPF+MvvmLight
编写一个
C/S
客户端。在这个程序中,我将连接到MySQL数据库以查看和修改表。我知道如何在C#中连接到MySQL数据库,我想知道的是如何维护与MySQL dbs的连接。就我而言,我介绍了两种方法:

  • 声明一个全局
    MySqlConnection
    类型变量
  • 将我的连接字符串保存在配置文件中,并在需要时加载它

这两种方法的优点和缺点是什么?任何其他的解决方案都会很受欢迎。

有不同的处理方法。WPF中最常见的可能是让viewmodel处理对数据库(它是模型的一部分)的操作,通常是通过某种存储库或facade。如果您查看,您可以看到此操作的简单版本,例如:

public class CustomerViewModel : WorkspaceViewModel, IDataErrorInfo
{
    ...
    public void Save()
    {
        if (!_customer.IsValid)
            throw new InvalidOperationException(Strings.CustomerViewModel_Exception_CannotSave);

        if (this.IsNewCustomer)
            _customerRepository.AddCustomer(_customer);

        base.OnPropertyChanged("DisplayName");
    }

在此模式中,存储库对象通常会维护数据库连接,但调用存储库的是viewmodel代码。当然,你可以根据自己的需要,用一个成熟的DAL来替换这个巨石存储库。

妈妈……我后来意识到C#没有一个全局类型,但你仍然可以使用一些技巧

比如说,

首先添加此引用

using Microsoft.Practices.ServiceLocation;
然后获取感兴趣的
ViewModel的当前实例

MainViewModel mainViewModelInstance = ServiceLocator.Current.GetInstance<MainViewModel>();
MainViewModel mainViewModelInstance=ServiceLocator.Current.GetInstance();
现在,您几乎可以做任何事情,比如传递属性,而不必实现
ViewModel
的实例