【EF映射】EF入门(一)

发布时间:2021-09-20 12:24:10

EF理解

? ?EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM?(O/R Mapping)?框架。ORM(对象关系映射框架):指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。


? ? 也就是说业务实体在内存中表现为对象,在数据库中表现为数据,内存中的对象之间,存在关联和继承关系,而在数据库中,关系数据无法直接表达这些关系。而对象-关系映射(ORM)就是解决这一问题的。ORM作为一个中间件,实现程序对象到关系数据库的数据映射。那么,EF也就是一种实现数据库和程序中的实体相互映射的一种工具。


ORM理解

??一直在说ORM,那ORM是什么,下面就介绍一下ORM:




? ? ?ORM不是产品,是框架的总称,面向对象的程序设计语言到关系数据库的映射。也可以理解成ORM框架帮助我们跟踪实体的变化,并将实体的变化翻译成sql脚本,并执行到数据中去,也就是将实体的变化映射到了表的变化。转化的过程如下图:




对数据库的增删改查

? ?在打框架的时候我们知道了怎么去建立一个实体模型,过程不再赘述,对数据库的操作有两种方式,一种是CodeFirst,另一种是ModelFirst。两者的区别在与建立实体模型是前者选择从数据库中生成,后者选择空模板。




CoreFirst:


private void Form1_Load(object sender, EventArgs e)
{
// 实现EF第一种方式:CodeFirst:代码先行机制
/************************ 增加数据***********************/
//01.创建EF上下文实例
EFFirstEntities efFirst = new EFFirstEntities();
#region 新增数据
02.构造出一个实体
//Student stu = new Student();
//stu.Name = "张三";
03.将实体对象添加到实体集合中
//efFirst.Student.AddObject(stu);
04.最后要告诉EM帮我去将数据保存到数据库
//efFirst.SaveChanges();
#endregion
/*************************修改数据************************/
//02.构造出你要修改的实体
#region 修改数据
//Student stu = new Student();
//stu.Name = "李四";
//stu.ID = 4;
03.将当前实体用EF进行跟踪
//efFirst.Student.Attach(stu);
04.将状态设置为Modified
//efFirst.ObjectStateManager.ChangeObjectState(stu, EntityState.Modified);
05.保存
//efFirst.SaveChanges();
#endregion

/***********************删除数据*************************/
#region 删除
//Student stu = new Student();
//stu.ID = 4;
03.也是要跟踪当前的实体对象
//efFirst.Student.Attach(stu);
//efFirst.ObjectStateManager.ChangeObjectState(stu, EntityState.Deleted);
//efFirst.SaveChanges();
#endregion

/***************************查询数据*************/
//var 语法塘技术
//foreach (var item in efFirst.Student)
//{
// string result = string.Format("ID={0},Name={1}", item.ID, item.Name);
// MessageBox.Show(result);
//}
/****************** ***********通过linq方式查询***********/
//EF有延迟加载机制 select * from student where 1=1
//所谓延迟加载机制,当你真正需要数据的时候,EF才帮我们加载
var list = from c in efFirst.Student
where c.ID > 1
select c;
foreach (var item in list)
{
MessageBox.Show(item.Name);
}
ModelFirst:



/*******************************添加************************************************/
Customer customer = new Customer() { CName = "李小龙", CRemark = "功夫影星" };
modelFirst.Customer.AddObject(customer);
Order order1 = new Order() { OrderContent = "双节棍", Customer = customer, OrderDate = DateTime.Now };
modelFirst.Order.AddObject(order1);

Order order2 = new Order() { OrderContent = "布棍", Customer = customer, OrderDate = DateTime.Now };
modelFirst.Order.AddObject(order2);
modelFirst.SaveChanges();
/*************************************查询*************************************/
var temp = from c in modelFirst.Customer
where c.Order.Count >= 2
select c;
foreach (var item in temp)
{
foreach (var o in item.Order)
{
MessageBox.Show(o.OrderContent);
}
}
/*********************************修改********************************************/
Customer cust = new Customer(){CID = 1,CName = "小李",CRemark = "英雄"};
modelFirst.Customer.Attach(cust);
modelFirst.ObjectStateManager.ChangeObjectState(cust, EntityState.Modified);
modelFirst.SaveChanges();
/*********************************删除***********************************************/
var temp = from c in modelFirst.Order
where c.Customer.CID == 1
select c;
foreach (var item in temp)
{
modelFirst.Order.DeleteObject(item);
}
Customer cust = new Customer()
{
CID=1
};

modelFirst.Customer.Attach(cust);
modelFirst.ObjectStateManager.ChangeObjectState(cust, EntityState.Deleted);
modelFirst.SaveChanges();
【总结】


? ? 在开始接触新知识的时候,我们应该现要弄清楚是什么,为什么用,这样我们才能更好的发挥它的作用。关于EF知识的理解还有很多,下一篇会尽快出现...

相关文档

  • 人教版小学一年级语文期中考试试卷
  • 2019年山东理工职业学院各省录取分数线
  • 北京蓝皮书建议凿京津陆海运河 称可治理PM2.5
  • 国庆节的小学作文1000字
  • 有意义的六一作文
  • ACL 2020 | 用于链接预测的开放知识图谱嵌入
  • “将军县”兴国印象
  • 九年级语文曹刿论战预习题
  • 中央空调销售工作总结
  • 游戏道具系统策划参考
  • 海贼王常识
  • 台式电脑提示内存不足怎么解决
  • 幼儿教师的实习自我鉴定
  • 朋友圈上分享的跑步路线是哪个软件
  • 笔记本麦克风没声音怎么设置
  • 删除github的commit信息
  • 孩子帮家长洗衣服的作文
  • green加速器怎么用
  • 钓鱼  李金硕
  • 关于箍牙的日记
  • 求类似<风起青萍>的小说
  • 幼儿学乐器多大最合适
  • 企业做网络推广的方法有哪些?
  • 高中描写冬天美景的日记:雪的景色700字
  • 怎么写英语自我介绍
  • Oracle技术学习,行转列pivot,decode,列转行unpivot
  • 常用的一些GIS知识概念
  • 逗女孩的脑筋急转弯哄女孩开心的
  • 有关友情的诗词名句集锦
  • 多点生成管道
  • 猜你喜欢

  • 芦荟的作用与用途及药用价值
  • 永远陪着一个人的说说
  • 夏季钓鱼有什么要点需要注意
  • 捕捉意外 生成精彩——例谈小学语文课堂中的意外及应对策略
  • 安博维厄贝沙坦片有什么不良反应
  • 网络ping网关丢包严重_企业无线网络改造过程中意想不到的故障
  • 【思想汇报】大学生关于十七届四中全会的思想汇报2篇
  • 一年级语文下册 识字一 我的小天地课件 西师大版
  • 英汉“红”之情感隐喻意义对比分析
  • 鱼我所欲也人教版九年级语文PPT课件古风
  • 杭州新世电力复合材料有限公司(企业信用报告)- 天眼查
  • 2019六年级上册语文素材第十单元知识小结长春版语文
  • 八下第三单元第9课时_群文阅读课教案
  • 2018年高考地理一轮复*(人教版 )课件:第2课时 流域的综合开发—以美国田纳西河流域为例(31张)
  • 第2课时-利用二次函数模型解决建筑模型问题课堂反馈
  • 湖南雄楚科技有限公司企业信用报告-天眼查
  • 解放思想大讨论心得体会:抓好执行力
  • 安徽省2018年秋九年级化学上册第三单元物质构成的奥秘
  • 立思辰留学网:2017年东国大学象征物
  • Markdown 学习笔记(typora书写)
  • 2017-2018学年高中语文必修一文档:第2单元 单元考点链接 文言文句子翻译 含答案 精品
  • 电动汽车装空调多少钱
  • 中级财务会计第10章应付及应交款项PPT
  • 厦门恩普科技有限公司湖里分公司企业信用报告-天眼查
  • Within-word vs. across-word decoding for online speech recognition
  • 旅游财政政策论文
  • 教育教学案例写作指导
  • 在QT工程种添加一个类,进行编译,出现 multiple definition of "XXX"
  • 高速SerDes PCB 设计
  • 2016高考英语写作单句训练1-100(付答案)
  • 天龙八部3D手游教你重新认识天山 群殴神级控
  • 陶瓷墨水的研究现状
  • 2020版高考语文大一轮复*专题七文言文阅读课时达标24翻译文言句子(二)(含解析)
  • 2019-《我的信念》教学设计-范文word版 (4页)
  • 供电公司受电工程授权委托书
  • 冀州市跃廷棉花种植专业合作社企业信用报告-天眼查
  • 分利用历史文化资源发展特色文化产业
  • 历史会考指导练*题
  • 1对完善中国反倾销司法审查制度的几点设想
  • 历史会考练*题
  • 企业政治思想工作和企业文化关系
  • 青岛市人民政府关于印发《青岛市出租汽车客运企业质量信誉考核管
  • 电脑版