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

时间:2014-05-09 12:25:14

标签: c# mysql wpf client mvvm-light

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

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

这两种方法的proscons是什么?任何其他的解决方案也会受到赞赏。

2 个答案:

答案 0 :(得分:1)

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

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替换为巨型存储库。

答案 1 :(得分:0)

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

例如,

首先添加此引用,

using Microsoft.Practices.ServiceLocation;

然后获取您感兴趣的ViewModel

的当前实例
MainViewModel mainViewModelInstance = ServiceLocator.Current.GetInstance<MainViewModel>();

现在,您可以执行几乎所有操作,例如传递属性,而无需实现ViewModel的实例。