C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录

目录

一、应用程序设计

二、应用程序源码

三、生成效果


前文作者发布了在.NET Framework4.8 控制台应用中通过EF访问已有数据库,事实上在.NET Framework4.8 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样,数据库EF模型和上下文都是自动生成的,在这里不再重复叙述,只把应用部分、窗体设计、生成效果分享出来。

一、应用程序设计

设计有一个窗体,dataGridView1显示数据库的数据表blog,textBox1的文本是要追加记录的网址,button1是追加按钮。textBox2的文本是要删除记录的ID,button2是删除按钮。

二、应用程序源码

cs 复制代码
//.NET Framework4.8窗体应用通过EF访问已有数据库
//追加、删除数据库记录
using System;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;

namespace _10_7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 初始化Form1
        /// 初始化表格,显示数据表
        /// </summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "追加";
            button2.Text = "删除";
            label1.Text = "追加的Url:";
            label2.Text = "删除的ID:";

            button1.Size = new Size(40, 23);
            button2.Size = new Size(40, 23);

            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.AllowUserToDeleteRows = false;
            dataGridView1.AllowUserToResizeColumns = false;
            dataGridView1.AllowUserToResizeRows = false;
            dataGridView1.RowHeadersVisible = false;
            dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells;
            
            using (var db = new BloggingContext())
            {
                dataGridView1.DataSource = db.Blog.ToList();
            }              
        }

        /// <summary>
        /// 追加Add()
        /// 无论ID是否连续,都在数据库末尾追加新纪录
        /// </summary>
        #region 追加
        private void Button1_Click(object sender, EventArgs e)
        {
            using (var db = new BloggingContext())
            {
                if (textBox1.Text != "")
                {
                    db.Blog.Add(new Blog { Url = textBox1.Text.Trim().ToString() }); //追加记录
                    db.SaveChanges();
                    dataGridView1.DataSource = db.Blog.ToList();
                }
                else
                {
                    db.Blog.Add(new Blog { Url = "http://www.hao123.com/" }); //追加记录
                    db.SaveChanges();
                    dataGridView1.DataSource = db.Blog.ToList();
                }
            }
        }
        #endregion 追加

        /// <summary>
        /// 删除Remove()
        /// </summary>
        #region 删除记录
        private void Button2_Click(object sender, EventArgs e)
        {
            using (var db = new BloggingContext())
            {               
                db.Blog.Remove(new Blog { BlogId = Convert.ToInt32(textBox2.Text.Trim()) });               //删除记录按ID
                db.SaveChanges();
                dataGridView1.DataSource = db.Blog.ToList();
            }
        }
        #endregion 删除记录
    }
}

三、生成效果

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
《Rust程序设计》学习笔记一
开发语言·rust·学习笔记·rust程序设计
samble5 小时前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
Wang's Blog5 小时前
Java框架 SpringCloud 快速入门: 服务拆分之服务远程调用
java·开发语言·spring cloud
努力努力再努力wz5 小时前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
杨丰玮4186 小时前
C语言核心语法
java·c语言·开发语言·学习方法
ttwuai6 小时前
Go开源后台管理系统推荐:README、源码和License应该怎么验
开发语言·golang·开源
Java后端的Ai之路6 小时前
Python 进阶探索30 - Python中的装饰器
开发语言·人工智能·python·文件处理·装饰器模式
沫璃染墨6 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
黑妹天下第一乖6 小时前
第 05 讲:阿加犀 AidCV 图像处理加速与 OpenCV 一致开发实战
开发语言·图像处理·人工智能·嵌入式硬件·数码相机·opencv·计算机视觉
言乐66 小时前
Python基于关键词分拣快递(适用于电商与货运代理等)
开发语言·python·django·virtualenv·pygame