首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不加载整个关系

不加载整个关系
EN

Stack Overflow用户
提问于 2009-09-15 19:31:41
回答 2查看 64关注 0票数 2

我有一个简单的数据库,我在其中使用数据上下文生成Linq2SQL类。在我的应用程序的一部分中,我想加载整个关系,这样我就可以获得子记录。在应用程序的另一部分中,我正在跨越模型和视图之间的边界传递这种关系,我不想传递整个东西,因为子集非常大。有没有办法不让这些子类在一个部分中导出而在另一个部分中导出?

我知道在datacontext中将子属性设置为False,但这是一个全局更改。

EN

回答 2

Stack Overflow用户

发布于 2009-09-15 19:46:16

您可以使用数据上下文上的DataLoadOptions设置来完成此操作。您的应用程序中可能会有某种构建器类。对于最快和最脏的解决方案,您可以执行类似以下操作...

代码语言:javascript
复制
public class SqlContextBuilder
{
    public SqlContextBuilder(MyDataContext dataContext)
    {
        _dataContext = dataContext;
    }
    private readonly MyDataContext _dataContext;
    public MyDataContext CreateEagerLoadingContext()
    {
        var options = new DataLoadOptions();
        // set those options!
        _dataContext.LoadOptions = options;
        return _dataContext;
    }
    public MyDataContext CreateLazyLoadingContext()
    {
        // lazy loading happens by default
        return _dataContext;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2009-09-15 20:16:34

其中一种解决方案是将关系作为IQuerable传递。这将确保关系只有在被需要时才会执行。如果循环遍历关系,则将为每个子级执行该关系。

另一种技术可能是使用DTO对象来创建您想要传递的ViewModel。这意味着您的ViewModel可能与界面非常相似。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1429189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档