欢迎来到天天文库
浏览记录
ID:30953378
大小:76.88 KB
页数:5页
时间:2019-01-04
《【嘉为教育】ef框架使用之多对多关系实体数据更新》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、【嘉为教育】EF框架使用之多对多关系实体数据更新【摘要】EF框架给.NET开发者带来了很多便利,如对数据库的增删改查操作异常的便利,但是针对多对多关系的数据实体操作对于初次使用EF框架的开发者来说并不是那么容易,本文将针对这一问题给予讲解与示例。一.创建多对多实体关于如何创建多对多关系的实体并不是本文的讲解,读者可查看相关系列文章《EF框架使上下文的创建及表关系定义》来了解这一块,本文只展示最终创建成功的多对多关系数据库表,以学生选择课程的关系为例,一个学生可以选择多门课程,一门课程也可以有多个学生,具体创建成功后的表以及关系表如下:Course®CourseStudent^Students
2、列名IDNONameisActive列名列名两
3、IDNO—NameisActive创建更新方法EF中并没有我们习惯使用的类似于SQL中Update方法,但它有修改方法,故此我们需要自定义一个数据更新的实现方法。1)EF多对多关系数据更新原理我们通常更新数据的操作方法无非两种,一种是删除所有的数据再重新添加,一种是查找岀对应:然后更新。而EF的更新是把更新数据和被更新数据对比,相同的数据保持不变,不同的修改,被更新中多余的数据删除,被更新数据中没有的则添加。所以这样会使性能有一定的提升,但是种种约束导致更新操作也有一定的复杂。2)创建泛型更新方法我们在数据上下文中创建一个泛型的更新实现方法,在
4、Service层里直接引用上下文即可,数据上下文实际上就是Data层,负责和数据库交互,创建好的泛型方法如下:IIIIII修改单个实体数据IIIIII要修改的实体类型IIIIIIpublicvoidUpdate(Tentity)whereT:class{DbSettSet=base.Set();tSet.Attach(entity);
5、base.Entry(entity).State=System.Data.Entity.EntityState.Modified;base.SaveChanges();}三、创建课程Service层的更新方法1)创建Service的构造函数创建构造函数的目的在于保证Service中所有的操作方法都是同一个连接,在EF中,执行增删改方法时,必须保证是同一个连接,否则是不能操作成功,创建好的构造函数如下:III、、二1農讯训三〈'summary〉pub-icdassCourseService二CourseServiceTestConiextcontextspub-icCo
6、urseService。(ihis.coniexinnewTestcontexio;)2)QJBHBI驾俳菊駅Jfrs删驾卫w+、制ew皿浣血沛甫IDsILis矣student〉三〈summary〉三三〈'summary〉三7、JZT>4^^m+M岀课程信息_course.Students.Clear();〃这一行代码至关重要z先清除掉课程的学生信息的关系_course.Students=studentlist;//把更新数据赋值给课程实体数据context.Update(_course);//^j泛型更新方法}更多的IT资源尽在嘉为官网:http://www.canwav.net/
7、JZT>4^^m+M岀课程信息_course.Students.Clear();〃这一行代码至关重要z先清除掉课程的学生信息的关系_course.Students=studentlist;//把更新数据赋值给课程实体数据context.Update(_course);//^j泛型更新方法}更多的IT资源尽在嘉为官网:http://www.canwav.net/
此文档下载收益归作者所有