- 将MYSQL数据库和Entity Framework集成到MVVM框架中。
- 创建一个包含ObservableCollection属性的实体类。
- 使用Entity Framework将实体类映射到MYSQL数据库中的数据表。
- 实现保存更改的逻辑,使用SaveChanges()方法将更改应用到数据库中。
以下是一些示例代码:
实体类:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public ObservableCollection<Order> Orders { get; set; }
}
使用Entity Framework将实体类映射到MYSQL数据库的数据表:
public class MyDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL("server=localhost;database=mydatabase;user=root;password=mypassword");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>()
.HasMany(c => c.Orders)
.WithOne(o => o.Customer)
.HasForeignKey(o => o.CustomerId);
}
}
保存更改的逻辑:
public class CustomerViewModel : INotifyPropertyChanged
{
private MyDbContext _dbContext;
private ObservableCollection<Customer> _customers;
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Customer> Customers
{
get { return _customers; }
set
{
_customers = value;
OnPropertyChanged("Customers");
}
}
public CustomerViewModel()
{
_dbContext = new MyDbContext();
Customers = new ObservableCollection<Customer>(_dbContext.Customers.Include(c => c.Orders).ToList());
}
public void SaveChanges()
{
_dbContext.SaveChanges();
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}