【问题标题】: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类型变量
- 将我的连接字符串保存在配置文件中,并在需要时加载它。
这两种方法的pros 和cons 是什么?任何其他解决方案也将不胜感激。
【问题讨论】:
标签:
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 的实例。