EF 操作数据库中的表
1、VS创建项目(实现数据库的增删改查、并在dataGridView中展示)
增、改通过Button,删通过快捷菜单ContextMenuStrip控件(DateGridView控件的ContextMenuStrip属性中要选择),查通过dataGridView单元格单击事件
2、SQL Server中查看自己创建的数据库
3、VS中创建实体数据模型
在已创建的项目上,鼠标右键,添加,新建项,Visual C#项,ADO.NET实体数据模型
来自数据库的EF设计器,下一步
新建连接,输入服务器名,具体如下:
具体代码如下:
using System; using System.Data; using System.Data.Entity; //引用数据实体 using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string selectedName; //记录被选中的名称 private void Form1_Load(object sender, EventArgs e) { using(TestEntities2 db=new TestEntities2()) //实体(entity)模型对象 { dataGridView1.DataSource = db.Table_1.ToList();//控件中显示表中所有信息 } } private void button1_Click(object sender, EventArgs e) //增 { using(TestEntities2 db=new TestEntities2()) { Table_1 table = new Table_1 //表的对象 { Name = textBox1.Text, //为字段赋值 Price =Convert.ToInt32(textBox2.Text) }; //通过实体来操纵数据库中的表 db.Table_1.Add(table);//增 db.SaveChanges();//执行命令 dataGridView1.DataSource = db.Table_1.ToList();//重新展示数据源 } } private void button2_Click(object sender, EventArgs e) //改 { using (TestEntities2 db=new TestEntities2 ()) { Table_1 table = new Table_1 //表的对象 { Name = textBox1.Text, //Name是主键,不能修改 Price = Convert.ToInt32(textBox2.Text) //修改Price字段内容 }; db.Entry(table).State = EntityState.Modified; //改 db.SaveChanges(); //执行命令 dataGridView1.DataSource = db.Table_1.ToList(); //展示 } } private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) //删,快捷菜单中实现 { using (TestEntities2 db=new TestEntities2 ()) { //控件中水果名,来锁定数据库表中商品所在行 Table_1 table = db.Table_1.Where(W => W.Name == selectedName).FirstOrDefault(); //lambda表达式 if (table!=null) { db.Table_1.Remove(table); //删 db.SaveChanges(); //执行命令 dataGridView1.DataSource = db.Table_1.ToList(); MessageBox.Show("删除成功!"); } else { MessageBox.Show("请选择要删除的内容!"); } } } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) //查,鼠标点击单元格,注意是CellClick事件 { if (e.RowIndex>=0) //判断是否选择了行 { //控件中,获取选中的水果名。dataGridView1[列, 行]
//selectedName=Convert.ToString( dataGridView1.Rows[e.RowIndex].Cells[0].Value).Trim();
selectedName = Convert.ToString(dataGridView1[0, e.RowIndex].Value).Trim(); using (TestEntities2 db=new TestEntities2() ) { //获取选中对象所在的行(Name是数据表的主键) Table_1 table = db.Table_1.Where(W => W.Name == selectedName).FirstOrDefault(); if (table!=null) //不为空,则展示此水果的行内容 { textBox1.Text = table.Name; textBox2.Text = table.Price.ToString(); } } } } } }
参考博客 https://blog.csdn.net/qq_36598803/article/details/77664976
分类:
SQL Server
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2017-05-04 数组、结构体、联合体、枚举类型、类型转换