EF 数据库增删改查

                                          EF 数据库增删改查

一、准备工作

1、SQL数据库,建一个数据库,数据库名称为WareHouse。

2、VS端,新建控制台应用程序,添加EF,连接数据库,添加连接字符串。

 

 二、操作数据库(CRUD)

public class EFCodeFirstDbContext : DbContext
    {

        public EFCodeFirstDbContext() : base("name=MyStrConn")
        {
        }
        public DbSet<LocationInfo> LocationInfos { get; set; }
    }

 

 public class LocationInfo
    {
        [Key]
        public int LocationId { get; set; }//库位号
        public string Type { get; set; }//种类
        public int Number { get; set; }//数量
        public string Material { get; set; }//材质
        public string RFIDNumber { get; set; }//料盘的RFID号

        public LocationInfo(int locationId,string type,int number,string material,string rfidNumber)
        {
            this.LocationId = locationId;
            this.Type = type;
            this.Number = number;
            this.Material = material;
            this.RFIDNumber = rfidNumber;
        }
        //定义无参数的构造函数主要是因为在通过DbSet获取对象进行linq查询时会报错
        //The class 'EFCodeFirstModels.Student' has no parameterless constructor.
        public LocationInfo() { }


    }

 

1、增(Create)

class Program
    {
        
        static void Main(string[] args)
        {
            //using能及时释放资源,例如数据库连接异常,可以即使将上下文释放
            using (var db = new EFCodeFirstDbContext())
            {
                //增
                LocationInfo locationInfo1 = new LocationInfo(1, "empty", 0, "empty", "00010000");
                LocationInfo locationInfo2 = new LocationInfo(2, "empty", 0, "empty", "00020000");
                LocationInfo locationInfo3 = new LocationInfo(3, "empty", 0, "empty", "00030000");
                LocationInfo locationInfo4 = new LocationInfo(4, "empty", 0, "empty", "00040000");
                LocationInfo locationInfo5 = new LocationInfo(5, "empty", 0, "empty", "00050000");
                LocationInfo locationInfo6 = new LocationInfo(6, "empty", 0, "empty", "00060000");
                LocationInfo locationInfo7 = new LocationInfo(7, "empty", 0, "empty", "00070000");
                LocationInfo locationInfo8 = new LocationInfo(8, "empty", 0, "empty", "00080000");
                LocationInfo locationInfo9 = new LocationInfo(9, "empty", 0, "empty", "00090000");
                LocationInfo locationInfo10 = new LocationInfo(10, "empty", 0, "empty", "000A0000");
                db.LocationInfos.Add(locationInfo1);
                db.LocationInfos.Add(locationInfo2);
                db.LocationInfos.Add(locationInfo3);
                db.LocationInfos.Add(locationInfo4);
                db.LocationInfos.Add(locationInfo5);
                db.LocationInfos.Add(locationInfo6);
                db.LocationInfos.Add(locationInfo7);
                db.LocationInfos.Add(locationInfo8);
                db.LocationInfos.Add(locationInfo9);
                db.LocationInfos.Add(locationInfo10);
                db.SaveChanges();
               
            }
            Console.ReadLine();
        }
    }

 

2、查(Retrieve)

查所有数据

 class Program
    {
        static void Main(string[] args)
        {
            //using能及时释放资源,例如数据库连接异常,可以即使将上下文释放
            using (var db = new EFCodeFirstDbContext())
            {
                //查
                StringBuilder stringBuilder = new StringBuilder();
                foreach (var item in db.LocationInfos)
                {
                    stringBuilder.AppendFormat(
                        "库位号:{0}\t物料类型:{1}\t物料数量:{2}\t物料材质:{3}\tRFID号:{4}\n", 
                        item.LocationId, item.Type, item.Number, item.Material, item.RFIDNumber);
                }
                Console.WriteLine(stringBuilder);
            }
            Console.ReadLine();
        }
    }

 

查某条数据

 

class Program
    {
        static void Main(string[] args)
        {
            //using能及时释放资源,例如数据库连接异常,可以即使将上下文释放
            using (var db = new EFCodeFirstDbContext())
            {
                //查
                var query = from q in db.LocationInfos
                            where q.LocationId == 5
                            select q;
                StringBuilder stringBuilder = new StringBuilder();
                foreach (var item in query)
                {
                    stringBuilder.AppendFormat(
                        "库位号:{0}\t物料类型:{1}\t物料数量:{2}\t物料材质:{3}\tRFID号:{4}\n", 
                        item.LocationId, item.Type, item.Number, item.Material, item.RFIDNumber);
                }
                Console.WriteLine(stringBuilder);
            }
            Console.ReadLine();
        }
    }

 

3、改(Update)

class Program
    {
        static void Main(string[] args)
        {
            //using能及时释放资源,例如数据库连接异常,可以即使将上下文释放
            using (var db = new EFCodeFirstDbContext())
            {
                //改
                LocationInfo locationInfo = new LocationInfo() { LocationId=5};

                locationInfo = db.LocationInfos.Attach(locationInfo);
                locationInfo.Type = "bottle";
                locationInfo.Number = 4;
                locationInfo.Material = "Sn";
                locationInfo.RFIDNumber = "00050101";
                db.SaveChanges();
            }
            Console.ReadLine();
        }
    }

 

4、删(Delete)

class Program
    {
        static void Main(string[] args)
        {
            //using能及时释放资源,例如数据库连接异常,可以即使将上下文释放
            using (var db = new EFCodeFirstDbContext())
            {
                //删
                LocationInfo locationInfo = db.LocationInfos.Where(p=>p.LocationId==9).FirstOrDefault();
                db.LocationInfos.Remove(locationInfo);
                db.SaveChanges();
            }
            Console.ReadLine();
        }
    }

由于刚接触数据库,对很多概念不是特别清晰,操作数据库的类别分的不是很好,后面再详细学习!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值