实体框架4选择性延迟加载属性

26 ado.net entity-framework entity-framework-4

是否可以加载不包括某些属性的实体?这个实体的一个属性选择起来很昂贵.我想懒加载这个属性.那可能吗?

小智 36

既然你已经阅读了所有人的回复,我会给你正确答案.EF不支持延迟加载属性.然而,它确实支持了一个非常强大的概念.它被称为表拆分,您可以将表映射到两个实体.假设数据库中的产品表可以映射到产品实体和ProductDetail实体.然后,您可以将昂贵的领域到实体产品详情,然后创建prodcut和产品详情实体之间的1..1关联.然后,您可以在需要时延迟加载productdetail关联.在我的书的性能章节中,我有一个名为的食谱.13-9.将昂贵的财产转移到另一个实体

希望有所帮助!

Julie Lerman有一篇关于如何拆分桌子的文章

  • 谢谢.我必须这样做.但是EF4应该支持标量属性的延迟加载,它可以非常方便. (3认同)

Cra*_*ntz 7

使用标量属性,选择性地不加载某个属性的唯一方法是使用ESQL或L2E进行投影:

var q = from p in Context.People
        select new
        {
            Id = p.Id,
            Name = p.Name // note no Biography
        };
Run Code Online (Sandbox Code Playgroud)

+1丹; 懒惰地做这个比预先加载它更糟糕.如果要控制加载,请明确.

  • @Nazaf,你过早地进行了优化. (2认同)