【问题标题】:What's the best way for maintaining a MySQL connection in WPF?在 WPF 中维护 MySQL 连接的最佳方法是什么?
【发布时间】:2014-05-09 12:25:14
【问题描述】:

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

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

这两种方法的proscons 是什么?任何其他解决方案也将不胜感激。

【问题讨论】:

    标签: c# mysql wpf client mvvm-light


    【解决方案1】:

    有不同的方法来处理这个问题。 WPF 中最常见的可能是让您的视图模型处理操作数据库(这是模型的一部分),通常通过某种存储库或外观。如果您查看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");
        }
    

    在这种模式中,存储库对象通常会维护数据库连接,但调用存储库的是视图模型代码。当然,您可以根据需要用成熟的 DAL 替换该巨石存储库。

    【讨论】:

      【解决方案2】:

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

      例如,

      先添加这个引用,

      using Microsoft.Practices.ServiceLocation;
      

      然后获取您感兴趣的ViewModel的当前实例

      MainViewModel mainViewModelInstance = ServiceLocator.Current.GetInstance<MainViewModel>();
      

      现在,您几乎可以做所有事情,例如传递属性,而无需实现 ViewModel 的实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-30
        • 1970-01-01
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        相关资源
        最近更新 更多