ORM还有一支 EF的增删改

来源:互联网 发布:淘宝直播入口 编辑:程序博客网 时间:2024/04/29 02:57

首先感谢大神们对知识的无私共享o(^▽^)o,这篇不算是原创但是也不是翻译也不是转发

今天这里的主角之一是linQ语句,和SQL的区别、简单说一点

SQL//执行计划 select *  第三步 from Branch 第一步 where id=124; 第二步  LinQ from Branch 第一步 where id=124; 第二步 select *  第三步

第一步:建立ADO.NET实体数据模型 一抓一大把

第二步:增删改查


 //创建访问数据库的上下文  统一入口 入口 入口   入口 入口 HeimaRegulationEntities dbContext=new HeimaRegulationEntities(); Branch branch=new Branch(); branch.BranchName="mjx"; branch.BranchType=2; branch.DelFlag=0; branch.Remark="pretty"; branch.SubTime=DateTime.Now; //想dbcontext指向的branch表中添加一行数据 dbContext.Branch.AddObject(branch); //正在保存到数据库  生成SQL脚本 SQL脚本 SQL脚本  dbContext.SaveChanges();

 

branch.id=124; branch.BranchType=0; branch.BranchName="mjx"; branch.Remark="xiaoxing"; branch.DelFlag=0; branch.SubTime=DateTime.Now; //修改此实体,将当期实体附加到上下文中管理 dbContext.Branch.Attach(branch); //将上下文跟踪的实例:branch状态改为修改状态Modefied dbContext.ObjectStateManager.ChangeObject(branch,EntityState.Modefied); dbContext.SaveChanges();


另一种,其实差不多
 
branch.BranchName="mjx"; branch.BranchType=2; branch.DelFlag=0; branch.Remark="pretty"; branch.SubTime=DateTime.Now; //vs2012:自动附加到上下文 //实体跟踪,将状态更改为modified dbContext.Entry<Branch>(branch).State=EntityState.Modified; dbContext.SaveChanges();


third:
 //查询实体:默认便是被跟踪的状态 var item=dbContext.Branch.FirstOrDefault(); //改变属性,自动将此实体状态改为modified状态 item.BranchName="马金兴"; dbContext.SaveChanges();


删:

 Branch branch=new Branch(); branch.id=124; dbContext.Branch.Attach(branch); dbContext.ObjectStateManager.ChangeObject(branch,EntityState.Deleted); dbContext.SaveChanges();



一、

#region  利用foreach循环查询数据库 马金兴 2017年5月24日17:21:05    foreach (var branchOne in dbContext.Branch)    {        Console.WriteLine(string.Format("id:{0} Name:{1}",branchOne.id,branchOne.BranchName));    } #endregion


二、
 var item=from b in dbContext.Branch          where b.id=124          select b;//查询出来的实体已经附件在上下文中,无需再附              .First();//取第一个元素    .FirstorDefault();//第一个 或者  默认值(根据类型)    .Single();// = 一条    .SingleOrDefault();// < = 0条


三、

 from b in BuildingInfo
 join p in Pro on b.proID equals p.id
 select new {b.id,b.bulidingName,p.projectName}


小结:

主要是O---R----M;;;ORM框架

框架、入口、映射

面向对象里不同类型系统的数据之间的转换,实体变化映射到数据库表的变化

EF:

将实体的变化翻译成sql脚本,并执行到数据库中


PS:待完善的地方,欢迎交流(●'◡'●)

原创粉丝点击