MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
2016-11-24 11:54
260 查看
通过上一篇的学习 我们把demo的各种关系终于搭建里起来 以及处理好了如何映射到数据库等问题 但是 只是搭建好了关系 问题还远没有解决
这篇就来写如何查找导航属性 和查找导航属性的几种方式 已经跟踪生成的SQL来检测是否满意 通过这节学习 来明白什么时候用哪个~~
一.三种加载
1.延迟加载
View Code
继续分析
如果点击教师 则可查看该教师教的课程 这个id 就是教师ID 一会儿会在视图展示这个 这个就是根据教师查看课程
接着是点击课程 查看所选的学生和分数
这里还给出里另一种方法
课程类
这里面加了 院系ID 我以前一直觉得没有必要加这个 今天在做这个导航属性查找时 发现一个问题 做个小实验
比如我想得到其中一个课程的ID 如果有院系ID 属性 可以这么写
如果没 可以这么写
首先 这个都没有用贪婪加载 默认的延迟加载 如果你使用上面的 则不会往数据库里去执行一条根据课程ID查找院系的SQL语句
但你使用下面的 则会往数据库里发送一条查找语句
这点 EF做的是并不好的 在NH里 两种方法 都不会发送 因为在下面那里使用了代理 而EF没有
我想问的是 是我哪操作的不对么? 造成了这个原因? 请高手解答下
四.总结
关系的加载就结束了 其实写关系加载的园子中有不少好文章了 我这里写的少了些~~
不过关系的操作还没有结束
这篇就来写如何查找导航属性 和查找导航属性的几种方式 已经跟踪生成的SQL来检测是否满意 通过这节学习 来明白什么时候用哪个~~
一.三种加载
1.延迟加载
View Code
继续分析
if (id != null) { ViewBag.InstructorID = id.Value; viewModel.Courses = viewModel.Instructors.Where(i => i.InstructorID == id.Value).Single().Courses; }
如果点击教师 则可查看该教师教的课程 这个id 就是教师ID 一会儿会在视图展示这个 这个就是根据教师查看课程
接着是点击课程 查看所选的学生和分数
if (courseId != null) { viewModel.Enrollments = viewModel.Courses.Where(i => i.CourseID == courseId.Value).Single().Enrollments; }
这里还给出里另一种方法
课程类
这里面加了 院系ID 我以前一直觉得没有必要加这个 今天在做这个导航属性查找时 发现一个问题 做个小实验
比如我想得到其中一个课程的ID 如果有院系ID 属性 可以这么写
var courses = db.Courses.ToList(); int i = courses[0].DepartmentID;
如果没 可以这么写
int i = courses[0].Department.DepartmentID;
首先 这个都没有用贪婪加载 默认的延迟加载 如果你使用上面的 则不会往数据库里去执行一条根据课程ID查找院系的SQL语句
但你使用下面的 则会往数据库里发送一条查找语句
这点 EF做的是并不好的 在NH里 两种方法 都不会发送 因为在下面那里使用了代理 而EF没有
我想问的是 是我哪操作的不对么? 造成了这个原因? 请高手解答下
四.总结
关系的加载就结束了 其实写关系加载的园子中有不少好文章了 我这里写的少了些~~
不过关系的操作还没有结束
相关文章推荐
- MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- MVC3+EF4.1学习系列(十)----MVC+EF处理树形结构
- MVC3+EF4.1学习系列(九)-----EF4.1其他的一些技巧的使用
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决(转)
- MVC3+EF4.1学习系列(九)-----EF4.1其他的一些技巧的使用
- (转)MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- Entity Framework(EF) Code First将实体中的string属性映射成text类型的几种方式
- EF Code First 导航属性 与外键 学习笔记
- MVC3+EF4.1学习系列(八)-----利用Repository and Unit of Work重构项目
- (转)MVC3+EF4.1学习系列(十)----MVC+EF处理树形结构
- 黑马程序员(学习笔记一)——关于一维数组的几种操作方式。求最大,最小值,查找!
- MVC3+EF4.1学习系列(十一)----EF4.1常见的问题解决
- MVC3+EF4.1学习系列
- 42、C#:EF框架的:导航属性,加载记录追踪方式(MergeOption),添加内存内容到新上下文(Attach)
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
- MVC3+EF4.1学习系列
- MVC3+EF4.1学习系列(一)-------创建EF4.1 code first的第一个实例(强转)