用C#使用EF框架编写window应用程序进行可视化增删改查

演示

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();

            }
        }

运行测试

在这里插入图片描述

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#使用Entity Framework (EF)进行多表的增删改查操作,可以按照以下步骤进行: 1. 创建实体类:首先,创建对应数据库表的实体类。每个表对应一个实体类,并在类中定义属性来映射表中的字段。 2. 创建上下文类:使用EF的Code First方式,创建一个继承自`DbContext`的上下文类。在上下文类中,通过`DbSet`属性定义每个实体类对应的数据库表。 3. 连接数据库:在应用程序的配置文件中,配置数据库连接字符串,指定要连接的数据库。 4. 增加数据:使用上下文类创建实体对象,并将其添加到相应的`DbSet`属性中,然后调用上下文类的`SaveChanges`方法来保存更改。 ```csharp using (var context = new YourDbContext()) { var entity = new YourEntity() { // 设置实体属性 }; context.YourEntities.Add(entity); context.SaveChanges(); } ``` 5. 查询数据:使用LINQ查询语句来从数据库中检索数据。 ```csharp using (var context = new YourDbContext()) { var result = context.YourEntities .Where(e => e.SomeProperty == someValue) .ToList(); } ``` 6. 更新数据:首先查询要更新的实体,然后修改实体的属性,并调用上下文类的`SaveChanges`方法保存更改。 ```csharp using (var context = new YourDbContext()) { var entity = context.YourEntities.Find(id); if (entity != null) { // 修改实体属性 context.SaveChanges(); } } ``` 7. 删除数据:首先查询要删除的实体,然后调用上下文类的`Remove`方法将实体从`DbSet`属性中移除,并调用`SaveChanges`方法保存更改。 ```csharp using (var context = new YourDbContext()) { var entity = context.YourEntities.Find(id); if (entity != null) { context.YourEntities.Remove(entity); context.SaveChanges(); } } ``` 以上是使用EF进行多表增删改查的基本步骤,具体操作还需要根据你的实际需求和数据库结构进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值