WPF 结合 MVVM模式以及 SQLSugar 是一个强大的应用程序架构,可以用来创建具有良好分层和可维护性的应用程序。以下是一个简单的指导,介绍如何在 WPF MVVM 中使用 SQLSugar 访问 MySQL 数据库。
使用 WPF MVVM 框架结合 MySQL 数据库和 SqlSugar ORM 工具的详细步骤:
1、首先需要安装 SqlSugar 和 MySql.Data 两个 NuGet 包。打开 Visual Studio,右键点击项目 -> NuGet 包管理器 -> 管理解决方案的 NuGet 包,然后搜索 SqlSugar 和 MySql.Data,并安装它们。
2、创建一个名为 Models 的文件夹,在这个文件夹里创建一个名为 DatabaseContext.cs 的类,这个类用于连接到你的 MySQL 数据库。代码如下:
using System;using SqlSugar;namespace [your project name].Models{public class DatabaseContext{private static readonly Lazy<SqlSugarClient> _db = new Lazy<SqlSugarClient>(() =>{var db = new SqlSugarClient(new ConnectionConfig(){ //参ConnectionString 根据自己项目需求组合ConnectionString = "your connection string",//ConnectionString = string.Format("server={0};uid={1};pwd={2};database={3}", server, id, pwd, database),DbType = DbType.MySql,InitKeyType = InitKeyType.Attribute,IsAutoCloseConnection = true});// 设置 SqlSugar 日志记录db.Aop.OnLogExecuted = (sql, pars) =>{Console.WriteLine(sql + "\r\n" +db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));};db.Aop.OnError = (exp) => Console.WriteLine(exp.Message);return db;});public static SqlSugarClient Db => _db.Value;}}
其中,ConnectionString 的值应该替换成你的 MySQL 数据库连接字符串。
3、接下来创建一个名为 UserRepository 的类,这个类用于执行用户相关的操作,比如增删改查等。代码如下:
using System.Collections.Generic;using [your project name].Models;namespace [your project name].Repositories{public class UserRepository{public List<User> GetAll(){return DatabaseContext.Db.Queryable<User>().ToList();}public void Insert(User user){DatabaseContext.Db.Insertable(user).ExecuteCommand();}public void Update(User user){DatabaseContext.Db.Updateable(user).ExecuteCommand();}public void Delete(User user){DatabaseContext.Db.Deleteable(user).ExecuteCommand();}}}
其中,User 是你自己定义的实体类,它应该对应着数据库中的一张表。
4、在 ViewModel 中使用 UserRepository 执行数据库操作。可以在 ViewModel 的构造函数中初始化 UserRepository,然后在需要使用时调用它的方法。例如:
using System.Collections.ObjectModel;using System.ComponentModel;using System.Windows.Input;using [your project name].Models;using [your project name].Repositories;using GalaSoft.MvvmLight;using GalaSoft.MvvmLight.Command;namespace [your project name].ViewModels{public class MainViewModel : ViewModelBase{private readonly UserRepository _userRepository = new UserRepository();private ObservableCollection<User> _users;public ObservableCollection<User> Users{get => _users;set => Set(ref _users, value);}public ICommand LoadUsersCommand { get; }public MainViewModel(){LoadUsersCommand = new RelayCommand(LoadUsers);if (IsInDesignMode){// 在设计模式下,添加一些虚拟数据以便在 Visual Studio 中预览界面Users = new ObservableCollection<User>(){new User() {Id = 1, Name = "张三", Age = 20},new User() {Id = 2, Name = "李四", Age = 25},new User() {Id = 3, Name = "王五", Age = 30},};}}private void LoadUsers(){var users = _userRepository.GetAll();Users = new ObservableCollection<User>(users);}}}
在 LoadUsers 方法中调用 UserRepository 的 GetAll 方法来获取所有用户,然后把它们转换成 ObservableCollection 给 Users 属性赋值即可。
5、最后,在界面中绑定 ViewModel 的属性和命令。例如:
<Window x:Class="[your project name].MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:viewModels="[your project name].ViewModels"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.DataContext><viewModels:MainViewModel /></Window.DataContext><Grid><DataGrid ItemsSource="{Binding Users}" AutoGenerateColumns="False"><DataGrid.Columns><DataGridTextColumn Header="ID" Binding="{Binding Id}" /><DataGridTextColumn Header="Name" Binding="{Binding Name}" /><DataGridTextColumn Header="Age" Binding="{Binding Age}" /></DataGrid.Columns></DataGrid><Button Content="Load Users" Command="{Binding LoadUsersCommand}" Margin="10" HorizontalAlignment="Right" VerticalAlignment="Bottom" /></Grid></Window>
这里使用了 DataGrid 控件来显示用户信息,使用 Button 控件来触发 LoadUsers 命令。注意,必须在 Window 标签中设置 DataContext 属性为 MainViewModel 的实例,这样才能把 ViewModel 中的属性和命令绑定到界面上。
总结
使用 WPF MVVM 模式结合 SQLSugar 访问 MySQL 数据库,可以帮助你创建一个结构良好且易于维护的应用程序。以上步骤为你提供了一个简单的指导,但在实际开发中,你可能需要根据项目的具体需求进行适当的调整和扩展。