如何在WPF应用中使用Entity Framework(EF)框架,针对MySQL和SQLite数据库实现表界面显示及CRUD功能。假设你已安装好相关依赖包,如针对MySQL的 MySql.Data.EntityFrameworkCore ,针对SQLite的 Microsoft.EntityFrameworkCore.Sqlite 。
针对MySQL数据库
创建WPF项目:在Visual Studio中创建新的WPF应用程序项目。
定义数据模型:假设存在一个 User 类,代表数据库中的用户表。
csharp
using System;
using System.ComponentModel.DataAnnotations;
public class User
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
配置DbContext:创建一个继承自 DbContext 的类,用于与数据库交互。
csharp
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL("server=localhost;database=your_database;user=your_user;password=your_password;");
}
}
界面设计:在 MainWindow.xaml 中设计界面,包含数据显示的 DataGrid 以及CRUD操作的按钮。
xml
<Window x:Class="MyWpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MySQL EF CRUD" Height="350" Width="525">
<Grid>
<DataGrid x:Name="UserDataGrid" Margin="10" AutoGenerateColumns="True"/>
<Button Content="添加" Margin="10,250,100,10" Click="AddUser_Click"/>
<Button Content="修改" Margin="120,250,100,10" Click="UpdateUser_Click"/>
<Button Content="删除" Margin="230,250,100,10" Click="DeleteUser_Click"/>
<Button Content="查询" Margin="340,250,100,10" Click="QueryUser_Click"/>
</Grid>
实现CRUD操作:在 MainWindow.xaml.cs 中编写代码实现CRUD功能。
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace MyWpfApp
{
public partial class MainWindow : Window
{
private MyDbContext _dbContext;
public MainWindow()
{
InitializeComponent();
_dbContext = new MyDbContext();
LoadUsers();
}
private void LoadUsers()
{
List<User> users = _dbContext.Users.ToList();
UserDataGrid.ItemsSource = users;
}
private void AddUser_Click(object sender, RoutedEventArgs e)
{
var newUser = new User { Name = "NewUser", Age = 20 };
_dbContext.Users.Add(newUser);
_dbContext.SaveChanges();
LoadUsers();
}
private void UpdateUser_Click(object sender, RoutedEventArgs e)
{
User selectedUser = UserDataGrid.SelectedItem as User;
if (selectedUser!= null)
{
selectedUser.Age++;
_dbContext.SaveChanges();
LoadUsers();
}
}
private void DeleteUser_Click(object sender, RoutedEventArgs e)
{
User selectedUser = UserDataGrid.SelectedItem as User;
if (selectedUser!= null)
{
_dbContext.Users.Remove(selectedUser);
_dbContext.SaveChanges();
LoadUsers();
}
}
private void QueryUser_Click(object sender, RoutedEventArgs e)
{
List<User> users = _dbContext.Users.Where(u => u.Age > 20).ToList();
UserDataGrid.ItemsSource = users;
}
}
}
针对SQLite数据库
定义数据模型:与MySQL示例中的 User 类相同。
配置DbContext:
csharp
using Microsoft.EntityFrameworkCore;
public class MySqliteDbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=your_database.db");
}
}
界面设计:可以复用MySQL示例中的 MainWindow.xaml 。
实现CRUD操作:在 MainWindow.xaml.cs 中,修改构造函数和 LoadUsers 方法使用SQLite的 DbContext 。
csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
namespace MyWpfApp
{
public partial class MainWindow : Window
{
private MySqliteDbContext _dbContext;
public MainWindow()
{
InitializeComponent();
_dbContext = new MySqliteDbContext();
LoadUsers();
}
private void LoadUsers()
{
List<User> users = _dbContext.Users.ToList();
UserDataGrid.ItemsSource = users;
}
// 其他CRUD方法与MySQL示例相同
}
}
通过以上步骤,你可以在WPF应用中分别使用EF框架针对MySQL和SQLite数据库实现表界面显示及CRUD功能。
领取专属 10元无门槛券
私享最新 技术干货