请给我一个WPF、Entity Framework和SqlServer之间的整合使用的c#例子
时间: 2024-05-12 18:16:41 浏览: 164
# WPF, Entity Framework和SqlServer整合使用的C#代码示例:
这个示例演示如何在WPF应用程序中使用Entity Framework 6(EF6)和SqlServer进行数据访问。
首先,我们需要在项目中添加Entity Framework和SqlServer NuGet包。在Visual Studio中,可以通过以下步骤添加它们:
1. 右键单击项目并选择“管理NuGet程序包...”
2. 在“浏览”选项卡中搜索“EntityFramework”和“SqlServer”并安装它们。
接下来,定义一个实体类,表示数据库中的表。例如,假设我们有一个“Person”表,其中包含“Id”,“FirstName”,“LastName”和“Email”字段:
```csharp
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
```
然后,我们需要定义一个继承自DbContext的数据库上下文类。我们可以在构造函数中指定SqlServer连接字符串。
```csharp
public class MyDbContext : DbContext
{
public MyDbContext() : base("name=MyConnectionString") { }
public DbSet<Person> People { get; set; }
}
```
在我们的WPF应用程序中,我们可以在代码中使用MyDbContext类来对数据库进行操作。例如,假设我们有一个“People”窗口,在这个窗口中我们可以查看所有人以及向人员列表中添加新的人员。
在窗口的ViewModel类中,我们可以声明一个MyDbContext实例,并在构造函数中初始化它:
```csharp
public class PeopleViewModel : INotifyPropertyChanged
{
private MyDbContext _dbContext;
public PeopleViewModel()
{
_dbContext = new MyDbContext();
People = new ObservableCollection<Person>(_dbContext.People);
}
public ObservableCollection<Person> People { get; set; }
// ...
}
```
然后,我们可以在窗口的XAML文件中使用ListView来显示人员列表,并在代码中通过添加新的Person对象来更新数据库。
```xaml
<ListView ItemsSource="{Binding People}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding FirstName}" Header="First Name" />
<GridViewColumn DisplayMemberBinding="{Binding LastName}" Header="Last Name" />
<GridViewColumn DisplayMemberBinding="{Binding Email}" Header="Email" />
</GridView>
</ListView.View>
</ListView>
```
对于添加新的Person对象,我们可以定义一个AddPerson方法来执行该操作。
```csharp
public void AddPerson(Person person)
{
_dbContext.People.Add(person);
_dbContext.SaveChanges();
People.Add(person);
}
```
在这个方法中,我们首先将新的Person对象添加到MyDbContext的People集合中,并调用SaveChanges方法来将更改保存到数据库。然后我们添加新的Person对象到People ObservableCollection中,这会自动更新人员列表UI。
最后,在窗口的后台代码中,我们可以调用AddPerson方法来在UI中添加新人员。
```csharp
private void AddPerson_Click(object sender, RoutedEventArgs e)
{
var person = new Person { FirstName = "John", LastName = "Doe", Email = "johndoe@example.com" };
viewModel.AddPerson(person);
}
```
阅读全文