asp.net – 实体框架 – 使用.Include()和.Select()的“eager lo
发布时间:2020-12-16 09:47:44 所属栏目:asp.Net 来源:网络整理
导读:这是我正在使用.NET 4.0在Entity Framework 5.0.0 RC(代码优先)中进行的查询 我是实体框架的新手,所以我仍然关注如何构建查询,特别是在选择“子”相关数据时. 我正在使用“急切加载”,因此我立即获得所有相关数据.但我遇到的问题是并非所有的Drop都被检索到
这是我正在使用.NET 4.0在Entity Framework 5.0.0 RC(代码优先)中进行的查询
我是实体框架的新手,所以我仍然关注如何构建查询,特别是在选择“子”相关数据时. 我正在使用“急切加载”,因此我立即获得所有相关数据.但我遇到的问题是并非所有的Drop都被检索到了. var loads = context.Loads .Include( p => p.Device ) .Include( p => p.Drops.Select( a => a.Customer ) ).Include( q => q.Drops.Select( b => b.Items.Select( c => c.Product ) ) ).Where( u => u.Id.Equals(id) ); 问题是,在生成的SQL查询中,客户正在内联到Drops,因此排除了没有Customer的Drops. 那么如何让它在这两个实体之间进行LEFT JOIN? .Include似乎做左连接 – 所以为什么不.选择? 有没有其他方法.选择我可以使用哪种方法进行LEFT JOIN? UPDATE 在与Amiram聊天后,我意识到我已经错误地设置了Drop模型.我需要将CustomerID列设置为可选: public class Drop { public int Id { get; set; } public int? CustomerId { get; set; } public int LoadId { get; set; } public DateTime Date { get; set; } public virtual Customer Customer { get; set; } public virtual ICollection<DropItem> Items { get; set; } } 我应该立即想到这一点,但说实话,我被推迟了.Include()始终执行LEFT JOIN这一事实,无论模型关系中的基数如何.我在想.Select()必须有一些类似的行为,但不是它只是遵守模型的配置:) 解决方法
Drop是内部与客户联系的,因为Drop.CustomerID的类型为int而不是nullable int(在聊天中查找).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 嵌套字典到嵌套转发器asp.net c#
- asp.net – 在.NET 4.6升级后,w3wp.exe与ThreadAbortExcept
- 跨线程访问——————转载
- 如何在asp.net会员中手动更改密码?
- asp.net – ASPX需要一个免费的datepicker
- asp.net-mvc – 在Umbraco 6.1.1 MVC 4中,如何使用继承自Um
- 为什么[System.ComponentModel.ToolboxItem(false)]默认来自
- asp.net-mvc – TempData [“sth”]为bool
- asp.net – CollapsiblePanelExtender在初始页面加载时不会
- asp.net – Cookie域优先?
推荐文章
站长推荐
- asp.net – MVC 3 System.Web.Optimization捆绑单
- asp.net-mvc – 在多层应用程序中使用IoC时避免程
- asp.net – ASP .Net Web API下载图像为二进制
- asp.net – ASP .net成员资格的交易
- asp.net-mvc-3 – Razor视图类型不继承自’Syste
- asp.net-mvc – 我的CRUD LINQ代码在哪里? ASP.
- 预编译的ASP.NET Web应用程序:错误“System.Web
- asp.net-core – RenderPartial()在ASP.Net 5 MV
- asp.net-mvc – 解耦Microsoft.AspNet.Identity.
- asp.net – 允许搜索机器人在没有会话ID的情况下
热点阅读