首页 文章

为什么首先在一对多关系实体框架代码中添加约束

提问于
浏览
0

在我将虚拟调用添加回主实体'space'之后,我正试图理解我的一对多关系中的差异 . 所有这一切,查看表是创建一个约束 . 有人可以解释一下之间的区别

公共虚拟空间{get;组; }

把它留下来?

这是我的主要实体'space'和'spaceimage',虚拟回调'space'

public class Space
{
    public int SpaceId { get; set; }
    public virtual ICollection<SpaceImage> Images { get; set; }  
}

public class SpaceImage
{
    public int SpaceImageId { get; set; }
    public byte[] Image { get; set; }
    public byte[] ImageThumbnail { get; set; }
    public string ContentType { get; set; }
    public bool IsMain { get; set; }

    public virtual Space Space { get; set; } // adds a constraint in sql server
}

1 回答

  • 0

    区别在于您可以拨打这样的电话:

    var thisSpace = _context.Space.Include( x => x.Images).Where( blah == blah);
    

    好的,所以知道你从数据库中获得了空间,现在你根本不需要任何其他查询来获取图像,你就是这样做的 .

    thisSpace.Images // now this is filled with a collection of images
    

    您不需要连接,您根本不需要做任何事情 - 请参阅实体框架是多么棒 . 缺点......是框架中的一些开销,可以做这样的事情 .

    更新:

    你问过懒惰加载,你仍然可以控制延迟加载 .

    看看你是否这样做:

    var thisSpace = _context.Space.Include( x => x.Images).Where( blah == blah).ToList();
    

    然后查询将立即执行,图像将被附加 . 要么..

    你可以做点什么

    var thisSpace = _context.Space.Include( x => x.Images).Where( blah == blah);
       foreach( var image in thisSpace.Images){
       // when you hit this in code the query will actually execute
       // if lazy loading
       }
    

相关问题