演示
EF框架演示
运行环境
Visual Studio 2019
SQL Server
EntityFramework 6.2.0
一、创建项目,编写数据库
创建一个Windows窗体应用(.NET Framework)
添加新项目
创建后再创建下图:
创建SQL数据库,创建表
创建数据库StudyEF,创建表如下:
在这里要强调一点,在创建表的时候一定设置主键,不然创建后的ef框架会有问题。
往表里面添加几条数据,方便进行测试
给项目添加EF实体数据模型
添加一个ADO.NET实体数据模型,我将其命名为EFData,然后进行下面操作
然后就是完成,漫长的等待创建完成
二、DataGridView绑定数据源
下一步,下一步,然后选择连接
下一步,下一步,一直到下图,选中表,点击完成
添加完成后,dgv控件自动显示字段名
这里的表头可以根据需求修改
运行测试,数据显示正常
三、实现添加按钮
编写代码
首先添加一个Add的windows窗体
如图所示:
鼠标双击添加按钮,在添加按钮事件里面开始编写:
String username = textBox1.Text;
String name = textBox2.Text;
String password = textBox3.Text;
String age = textBox4.Text;
String phone = textBox5.Text;
String email = textBox6.Text;
String address = textBox7.Text;
using (var study = new StudyEFEntities())
{
var test = new TestData // 假设TestData是您的实体类
{
// 在此处设置test对象的属性,例如:
password = password,
username=username,
name=name,
age=age,
phone=phone,
email=email,
address=address
};
// 将test对象添加到数据库中
study.TestData.Add(test);
// 保存更改到数据库
study.SaveChanges();
}
MessageBox.Show("添加成功");
Main f1 = (Main)this.Owner;
f1.Refresh_Method();
f1.Activate();
this.Hide();
在主页面(原来我写的是Test窗体,但是重新生成解决方案了也没有显示,估计是重名了与其他功能,于是我主界面换成了Main窗体)的添加按钮里面编写new一个窗体,并且写一个让数据刷新的方法,通过owner在添加窗体调用,这样添加完成原来的窗体更新数据。
private void button1_Click(object sender, EventArgs e)
{
Add f1 = new Add();
f1.Owner = this;
f1.Show();
}
internal void Refresh_Method()
{
this.testDataTableAdapter.Fill(this.studyEFDataSet1.TestData);
}
运行测试
测试没有问题。
四、实现删除按钮
编写代码
在Main窗体里面,双击删除按钮
//删除按钮
private void button2_Click(object sender, EventArgs e)
{
var dev1 = this.dataGridView1.CurrentRow;
using (var study = new StudyEFEntities())
{
if (dev1.Cells[0].Value != null)
{
int idToDelete;
if (int.TryParse(dev1.Cells[0].Value.ToString(), out idToDelete))
{
var ToDelete = study.TestData.FirstOrDefault(u => u.id == idToDelete);
if (ToDelete != null)
{
study.TestData.Remove(ToDelete);
study.SaveChanges();
}
}
}
this.testDataTableAdapter.Fill(this.studyEFDataSet1.TestData);
}
}
运行测试
测试没有问题,点击删除删除选中数据,并且刷新数据(原理是重新绑定数据)
五、实现修改按钮
编写代码
窗体之间传递参数
因为修改,修改是要有数据显示才能方便,不然就成重写了,在这里我觉得需要做一个参数传递。
Main窗体中修改按钮事件
//修改按钮
private void button3_Click(object sender, EventArgs e)
{
if (this.dataGridView1.SelectedRows.Count > 0)
{
var dev1 = this.dataGridView1.CurrentRow;
Update frm = new Update(dev1);
frm.Owner = this;
frm.Show();
}
else
{
MessageBox.Show("请先选择一条数据");
}
}
在update窗体中添加参数绑定
public Update(DataGridViewRow dev1)
{
InitializeComponent();
textBox8.Text = dev1.Cells[0].Value.ToString();
textBox1.Text = dev1.Cells[1].Value.ToString();
textBox2.Text = dev1.Cells[2].Value.ToString();
textBox3.Text = dev1.Cells[3].Value.ToString();
textBox4.Text = dev1.Cells[4].Value.ToString();
textBox5.Text = dev1.Cells[5].Value.ToString();
textBox6.Text = dev1.Cells[6].Value.ToString();
textBox7.Text = dev1.Cells[7].Value.ToString();
}
在update窗体中添加修改按钮代码
private void button1_Click(object sender, EventArgs e)
{
int id = int.Parse(textBox8.Text);
string username = textBox1.Text;
string name = textBox2.Text;
string password = textBox3.Text;
string age = textBox4.Text;
string phone = textBox5.Text;
string email = textBox6.Text;
string address = textBox7.Text;
using (var study = new StudyEFEntities())
{
// 假设你要更新的是用户信息
var ToUpdate = study.TestData.FirstOrDefault(u => u.id == id);
if (ToUpdate != null)
{
// 更新用户的属性
ToUpdate.username = username;
ToUpdate.name = name;
ToUpdate.password = password;
ToUpdate.age = age;
ToUpdate.phone = phone;
ToUpdate.email = email;
ToUpdate.address = address;
// 保存更改到数据库
study.SaveChanges();
}
}
MessageBox.Show("修改成功");
Main f1 = (Main)this.Owner;
f1.Refresh_Method();
f1.Activate();
this.Hide();
}
测试运行
运行测试没有问题。
六、实现查询按钮
新建表checkname,给下拉框添加数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f397227dd4d14975939f15b61b415af5.png
添加字段
去vs里更新模型数据
在main窗体里面绑定数据
编写代码
//查询按钮实现
private void button4_Click(object sender, EventArgs e)
{
using (var study = new StudyEFEntities())
{
// 查询满足条件的用户
if (comboBox1.SelectedValue.ToString() == "u.id")
{
int ToCheck;
if (int.TryParse(textBox1.Text, out ToCheck))
{
var test = study.TestData.Where(u => u.id == ToCheck);
this.dataGridView1.DataSource = test.ToList();
}
}
if (comboBox1.SelectedValue.ToString() == "u.username")
{
var test = study.TestData.Where(u => u.username == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
if (comboBox1.SelectedValue.ToString() == "u.name")
{
var test = study.TestData.Where(u => u.name == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
if (comboBox1.SelectedValue.ToString() == "u.password")
{
var test = study.TestData.Where(u => u.password == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
if (comboBox1.SelectedValue.ToString() == "u.phone")
{
var test = study.TestData.Where(u => u.phone == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
if (comboBox1.SelectedValue.ToString() == "u.email")
{
var test = study.TestData.Where(u => u.email == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
if (comboBox1.SelectedValue.ToString() == "u.phone")
{
var test = study.TestData.Where(u => u.phone == textBox1.Text);
this.dataGridView1.DataSource = test.ToList();
}
}
}
//重置按钮实现
private void button5_Click(object sender, EventArgs e)
{
textBox1.Text = "";
comboBox1.Text = "";
using (var study = new StudyEFEntities())
{
var test = study.TestData;
this.dataGridView1.DataSource = test.ToList();
}
}