EF框架将数据库的表映射到model中,这样使用封装好的函数对象的操作就可以转为SQL对数据库的操作。
EF的使用
1.工程中NuGet包安装。
2.安装成功后会有2个引用。
3.工程右键→Add→New Item
第一项是从数据库中导入Model
创建数据库连接,中间选择YES将连接的账号密码等放到app.config中,最后的EF命名在程序中会使用(取个方便的名)。
选择要导入的表和视图等。
点击finish完成。
工程中添加了这些item,上面是连接上下文,下面是EFTest.tt是添加的表Model.
代码中的应用
//select using (var ef = new EFTest()) { var dd = ef.aaaa.Where(s => s.ID == 33).FirstOrDefault(); } //delete using (var ef = new EFTest()) { var lst_header = ef.aaaa.ToList<aaaa>(); var lst_rt = lst_header.Where(s => s.ID > 0); ef.aaaa.RemoveRange(lst_rt); //如果是删除单个的就用 ef.aaaa.Remove(lst_rt); ef.SaveChanges(); } //update using (var ef = new EFTest()) { var dd = ef.aaaa.Where(s => s.ID == 33).FirstOrDefault(); dd.name = "jinwei33"; ef.SaveChanges(); } //insert using (var ef = new EFTest()) { var lst_rt = new List<aaaa>() { new aaaa() { ID = 77, age = 7 }, }; //如果是插入单个的就用 ef.aaaa.Add(lst_rt); ef.aaaa.AddRange(lst_rt); ef.SaveChanges(); }
执行SQL
using (var ef = new SDS_NONEDIEntities3()) { //返回实体类型的 //string sql = "select * from shipment_header"; //var studentList = ef.Shipment_Header.SqlQuery("Select top 10 * from shipment_header").ToList<Shipment_Header>(); //返回非实体类型的 var studentName = ef.Database.SqlQuery<string>("select top 1 shipmentno from shipment_header").FirstOrDefault<string>(); //无返回的 //int noOfRowUpdated = ef.Database.ExecuteSqlCommand("Update aaaa set name='sss' where id=77"); }
EF执行SQL