Naw*_*ada 7 c# entity-framework
我试图使用实体框架从数据库中获取一个表.
该表引用了另一个表,该表再次引用了其他表.我知道如何包含其他表格.根据这个答案,这个包含多个级别的MSDN页面是这样的:
entity.TableLevel1.Include(tLvl1=>tLvl1.TableLevel2.Select(tLvl2=>tLvl2.TableLevel3));
Run Code Online (Sandbox Code Playgroud)
但我的问题是,如何在3级包含另一张表?
这似乎不起作用:
entity.TableLevel1
.Include(tLvl1=>tLvl1.TableLevel2
.Select(tLvl2=>tLvl2.TableLevel3)
.Select(tLvl2 => tLvl2.AnotherTableLevel3);
Run Code Online (Sandbox Code Playgroud)
oct*_*ccl 19
添加另一个Include电话:
entity.TableLevel1.Include(tLvl1=>tLvl1.TableLevel2.Select(tLvl2=>tLvl2.TableLevel3))
.Include(tLvl1=>tLvl1.TableLevel2.Select(tLvl2=>tLvl2.AnotherTableLevel3));
Run Code Online (Sandbox Code Playgroud)
如果要加载相同级别的相关实体,则应Include为每个实体调用 扩展方法.
你可以打多个Include()电话:
entity.TableLevel1.Include(t1 => t1.TableLevel2);
entity.TableLevel1.Include(t1 => t1.TableLevel2.Select(t2 => t2.TableLevel3));
entity.TableLevel1.Include(t1 => t1.TableLevel2.Select(t2 => t2.AnotherTableLevel3));
Run Code Online (Sandbox Code Playgroud)
要么
entity.TableLevel1.Include("TableLevel2");
entity.TableLevel1.Include("TableLevel2.TableLevel3");
entity.TableLevel1.Include("TableLevel2.AnotherTableLevel3");
Run Code Online (Sandbox Code Playgroud)
但是您可以将导航属性标记为virtual延迟加载,因此您无需Include()拨打电话:
class TableLevel1
{
public virtual TableLevel2 TableLevel2 { get; set; }
}
class TableLevel2
{
public virtual TableLevel3 TableLevel3 { get; set; }
public virtual TableLevel3 AnotherTableLevel3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12945 次 |
| 最近记录: |