EF的导航属性

在EF中,外键被称为导航属性。

在EF core中,查询的时候默认是只查自身而不会去查询外键表的。如果想要让查询结果包含外键实体,则需要使用include方法来让查询结果包含外键实体。如

db.StudentDetails.Include(o=>o.Student).Where(s => s.u_SID == 1).FirstOrDefault().Student.Name;

生成sql语句时,使用Include在sql中内连接inner jion来查询,也就可以查询到外键表Student。

如果是使用select语句,当用到外键的属性时,则会自动生成inner join 语句,也就可以查询到外键。如下面的语句,也可以查询到外键表的数据。

db.StudentDetails.Where(s => s.u_SID == 1).Select(s => new { aId = s.u_SID, aName = s.Student.s_Name }).ToList();

原文地址:https://www.cnblogs.com/dayang12525/p/10977621.html

时间: 2024-10-09 02:56:31

EF的导航属性的相关文章

MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式

通过上一篇的学习 我们把demo的各种关系终于搭建里起来 以及处理好了如何映射到数据库等问题 但是 只是搭建好了关系 问题还远没有解决 这篇就来写如何查找导航属性 和查找导航属性的几种方式 已经跟踪生成的SQL来检测是否满意 通过这节学习 来明白什么时候用哪个~~ 一.三种加载 1.延迟加载 这是原文中的图 大家可以去看下  我模仿上面的做了个测试  出现了  已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭. 我的解决办法是    var departments

CodeFirst EF中导航属性的个人理解

>导航属性: 01.个人理解就是Ef中的属性在实体数据表中不存在(先这么认为); 02.就是除了根据表中列映射出的属性 之外根据表与表之间的关系的关联属性.方便操作与之关联的表; 例如: 有 表A 表B 的关系是1对多,根据A,B表创建A类和B类 那么在A类中除了根据表中列映射出的属性,还要根据表之间的关联关系创建一个B类型的ICollection<>集合属性,就叫做导航属性 而B类除了根据B表中的列创建的属性,还要创建一个A类型的导航属性, 说白了就是根据主键表创建的类 必须创建一个根

ef 更新导航属性

总之,要让所有的东西,都被DbContext管理状态 1.查出来,改了,再提交 2.new 出来,attach,再改,再提交 以上两种都较好理解 3.new出来,改了,再attach,在改状态,再提交 改状态这里,不是和普通属性一样Property(x=>x.?).IsModify=true,导航属性不能用这样的方式 因为导航属性对应的是一个集合,而状态是要对应到集合里的每个元素具体的状态,而不是集合整个的状态 ((IObjectContextAdapter)db).ObjectContext.

EF导航属性

其实有个小问题困扰了我好久,在年前一个项目的时候 当我使用EF向数据库添加一条数据并SaveChanges()之后,立即根据主键再查询出这条数据的时候,发现所有的导航属性竟然都没有值. 直接上测试项目,我们要创建两个对象,分别是Users和Orders,Users和Order的关系是一对多的关系.先补充一个小知识(我非常小白)_codeFitst.Orders.Add(order);如果order主键是自动增加的,当_codeFitst.SaveChanges();执行之后,order对象中的i

EF架构~过滤导航属性等,拼接SQL字符串

拼接T-SQL串,并使它具有通用性 好处:与服务器建立一次连接,给服务器发一条SQL命令,即可实现 代码如下: 1 /// <summary> 2 /// 构建Insert语句串 3 /// 主键为自增时,如果主键值为0,我们将主键插入到SQL串中 4 /// </summary> 5 /// <typeparam name="TEntity"></typeparam> 6 /// <param name="entity&

EF导航属性会自动从已查出来的对象附加

如果新增对象导航属性对应的Id有值,其相应的导航属性会自动在内存中查找,如果存在会自动附加上去. public virtual void UpdateMaterialPurchaseOrderItem( ChangeDtos<MaterialPurchaseOrderItemDetailInputDto> itemDetail, Guid billId) { Ensure.NotNull(itemDetail, nameof(itemDetail)); var materialPurchase

EF Code First 导航属性 与外键

一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之间的关系,自动为我们生成外键.观察下面的类: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; s

EFCode First 导航属性

EF外键 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /*

Entity Framework 6如何进行导航属性的筛选(context.Msg.First(t=&gt;t.Id==1).Include(t=&gt;t.MsgDetail),筛选MsgDetail带条件)

问题: https://q.cnblogs.com/q/98333/ Msg表(Id,Content,IsDel).内有 virtual ICollection<MsgDetail> MsgDetails属性 MsgDetail表(Id,MsgId,SubContent,IsDel) 两者是一对多关系. 如何进行如下意思的的筛选? 若写这句伪代码: context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail.Where(t=>t.