当前位置:  开发笔记 > 编程语言 > 正文

实体框架:将多个实体加载到一个实体

如何解决《实体框架:将多个实体加载到一个实体》经验,为你挑选了1个好方法。

假设我有一个角色实体和一个网站实体.现在,一个站点有许多角色,因此在Role类中有一个表示该关系的Site属性.如果我想要一个网站的角色,我会这样做:

Site.Roles.Load()

问题是,由于Role类上的Site属性不是集合而只是单个实体,因此没有Load方法:

currentRole.Site //????

因此,当加载角色时,站点为空,除了对角色集合进行查询以获取SiteID,从网站集获取站点,最后将其设置为currentRole的站点之外,无法获取站点.属性.

一定有更好的方法?我是否必须在查询中强制某种加入?看起来像这样就会像Load方法一样由代码生成.



1> 小智..:

实际上,访问它不会自动加载它.您可以使用Include方法将相关实体包含在单个查询中,但您也可以像对集合一样使用带引用的Load方法 - 它不是在CLR引用属性上,而是在与CLR并行的EntityReference属性上关于实体的参考.它的名称与CLR引用相同,但添加了"reference"一词.所以你可以说:

currentRole.SiteReference.Load();

值得一提的是,在EF的VS 2010/.net 4.0版本中,还可以在ObjectContext上设置一个属性,该属性将打开隐式延迟加载,以便访问clr引用将自动加载它,如果它尚未加载.

丹尼


是啊(!BlaahReference.IsLoaded)BlaahReference.Load(); 我的代码中的调用变得非常烦人..我很高兴他们为此添加了隐式支持.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有