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
的实例