.NET Core使用EF Core框架

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。core不像framwork一样可以在项目信件中直接选择ado.net实体数据模型。如下
说简单点,就是在我们做增删改查的时候,不用再写非常繁琐的SQL语句,
在以前,我们写完SQL语句后,查询出来的数据还要手动映射为我们的实体类。但现在,这些东西由EF来帮我们完成

 

 

安装EF Core
我们使用NuGet程序包来安装EF Core所需要的包
右键项目> 管理NuGet程序包

Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools (EF工具包,创建实体)

安装完成之后,我们打开程序包管理控制台
工具>NuGet程序包管理器>程序包管理控制台
打开控制台后输入以下命令:
Scaffold-DbContext -Force “Server=LAPTOP-FPRJ0F62\SQLEXPRESS;Database=ShopDB;uid=sa;Password=123;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/DataModels
命令格式:

Scaffold-DbContext -Force “Server=服务器名;Database=数据库名;uid=账户;Password=密码;” (EF组件名)Microsoft.EntityFrameworkCore.SqlServer -OutputDir (实体类存储位置)Models/DataModels

 

执行命令后,系统会自动根据表创建实体类
这里系统会创建一个继承了DBConext类的ShopDBContext,这个ShopDBContext是根据你的数据库名生成的,这个类是连接数据库的桥梁

使用EF Core增删改查
单表查询
这里我们创建一个asp.net mvc类型的项目
查询数据非常简单

class Program
    {
        static void Main(string[] args)
        {
            GetProductList();
        }
        //获取所有产品
        public static void GetProductList()
        {
            using (ShopDBContext db=new ShopDBContext())
            {
                var produces = db.Products;
                Console.WriteLine("编号\t产品名称");
                foreach (var item in produces)
                {
                    Console.WriteLine("{0}\t{1}",item.Id,item.Name);
                }
            }
        }
    }
 
执行结果:

在执行db.Products的时候,EF并不会立即去数据库查询,他是先定义好了一组SQL语句,当遇到ToList()或者是循环的时候,他才会去数据库查询数据

插入数据
public static void InsertProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //实例化一个Products 类,数据库的ID是自增的,所以新增数据的时候,不需要添加ID
                Products products = new Products()
                {
                    Name = "C#从入门到精通"
                };
                //添加一行数据
                db.Products.Add(products);
                //只有在执行db.SaveChanges()的时候,才会去保存数据
                //db.SaveChanges会返回受影响行数
                int res= db.SaveChanges();
                Console.WriteLine(res);
            }
            
            
        }
 
执行结果:

新增数据成功,新增数据的时候一定要db.SaveChanges,切记切记

修改数据
我们就修改下我们刚刚新增的数据
在修改数据的时候,要先查询出数据,EF要确保数据库有这条数据才去修改

public static void UpdateProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查询数据
                Products products = db.Products.Find(11);
                //修改数据
                products.Remark = "C#从入门到入坟";
                products.Price = 30;
                //保存数据
                int res = db.SaveChanges();
                Console.WriteLine(res);
                
            }
        }
 
在修改的时候,就不需要执行db.Products.Add();
执行结果:

删除数据
和修改数据一样,我们要先从数据库查询出这条数据,然后在进行删除

public static void DeleteProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查询数据
                Products products = db.Products.Find(11);
                db.Remove(products);
                //保存数据
                int res = db.SaveChanges();
                Console.WriteLine(res);
 
            }
        }
 
使用db.Remove(products);删除数据
————————————————
版权声明:本文为CSDN博主「一只小程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39569480/article/details/110956156

好的,下面为您提供一个基本的购物系统设计: 首先,需要连接数据库,可以使用C#自带的ADO.NET技术,具体步骤如下: 1. 在Visual Studio中,新建一个Windows Form应用程序项目。 2. 在“解决方案资源管理器”中,右键单击“引用”,选择“添加引用”,在“添加引用”对话框中选择“System.Data.dll”并添加。 3. 在窗口中添加一个DataGridView控件,用于显示商品列表。 4. 添加一个“连接”按钮和一个“查询”按钮,并分别设置它们的Click事件。 5. 在连接按钮的Click事件中,编写连接数据库的代码,如下所示: ```csharp using System.Data.SqlClient; ... private void btnConnect_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=ShopDB;Integrated Security=True"); conn.Open(); MessageBox.Show("数据库连接成功!"); conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } ``` 这里使用了SQL Server作为数据库,Data Source表示服务器名,Initial Catalog表示数据库名,Integrated Security=True表示使用Windows身份验证方式登录数据库。 6. 在查询按钮的Click事件中,编写查询商品列表的代码,如下所示: ```csharp private void btnQuery_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=ShopDB;Integrated Security=True"); conn.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from Product", conn); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } ``` 这里使用了SqlDataAdapter类来填充DataTable,然后将DataTable绑定到DataGridView控件上。 接下来,设计购物系统的界面和功能: 1. 在窗口中添加一个ListBox控件,用于显示购物车中的商品列表。 2. 在DataGridView控件的CellDoubleClick事件中,编写将商品加入购物车的代码,如下所示: ```csharp private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { try { string productName = dataGridView1.Rows[e.RowIndex].Cells["ProductName"].Value.ToString(); decimal price = decimal.Parse(dataGridView1.Rows[e.RowIndex].Cells["Price"].Value.ToString()); listBox1.Items.Add(productName + " - " + price.ToString("c")); } catch (Exception ex) { MessageBox.Show(ex.Message); } } ``` 这里获取选中行的商品名称和价格,然后将它们加入到购物车中。 3. 在ListBox控件的DoubleClick事件中,编写将商品从购物车中移除的代码,如下所示: ```csharp private void listBox1_DoubleClick(object sender, EventArgs e) { try { if (listBox1.SelectedIndex != -1) { listBox1.Items.RemoveAt(listBox1.SelectedIndex); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } ``` 4. 添加一个“结算”按钮,并在它的Click事件中编写计算总金额的代码,如下所示: ```csharp private void btnCheckout_Click(object sender, EventArgs e) { try { decimal total = 0; foreach (string item in listBox1.Items) { string[] parts = item.Split('-'); decimal price = decimal.Parse(parts[1].Trim()); total += price; } MessageBox.Show("总金额为:" + total.ToString("c")); } catch (Exception ex) { MessageBox.Show(ex.Message); } } ``` 这里遍历购物车中的商品,计算总金额并弹出提示框显示。 至此,一个简单的购物系统就设计完成了。当然,实际的购物系统肯定还需要更多的功能和细节处理,比如购物车中数量的增减、商品的分类和搜索、结算时的优惠和支付方式等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值