【问题标题】:Is it possible to relate a master/child record using L2S or EF是否可以使用 L2S 或 EF 关联主/子记录
【发布时间】:2011-07-22 21:08:49
【问题描述】:

编辑:我受限于 .Net 3.5...

我从 Linq to Sql 中的 存储过程 中检索到两个对象/集合(如果必须,我可以使用 EF)。它们与数据库和我的数据库模型中的一对多关系相关。我可以将这两个对象关联起来,以便我可以像这样访问它们:

ParentObject.ChildObjects.FirstOrDefault().Property

...不返回数据库?

【问题讨论】:

    标签: .net entity-framework linq-to-sql


    【解决方案1】:

    是的,有一种方法可以在 LINQ to SQL 中指定预先加载关系。如下所示应该可以工作。

    partial void OnCreated() {
        DataLoadOptions options = new DataLoadOptions();
        options.LoadWith<ParentObject>(o => o.ChildObjects);
        this.LoadOptions = options;
    }
    

    这是在数据上下文的 OnCreate 部分中指定选项,如果您希望规则在所有实例中持续存在,这很好,但您的情况可能不同。

    我认为加载更深的嵌套对象存在一些细微差别,仅供参考。

    还需要注意的是,这只是在请求父对象时预先加载父对象的相关实体,它并没有做任何魔术来组合初始父请求生成的查询。因此,本质上,现在每次请求父对象时都会执行两个查询,而不是一个,优点是它不会在枚举时返回数据库来检索关系的内容,因为它们已经被加载了。

    【讨论】:

    • 谢谢,这很有帮助,但不是我想要的。作为我的存储过程的输出,我已经有了主记录集和子记录集/集合。我想要一种将它们粘合在一起的方法,以便我可以将它们用作标准 linq to sql 对象。
    • @jlnorsworth 这是可以理解和可能的,我不知道我是如何错过你问题的粗体存储过程部分的,除非我加载了以前的版本并在之后添加了它。您可以在上下文中创建一个方法以将不同的数据集从 IMultipleResult(作为 proc 的输出)中提取出来,然后返回具有指定依赖实体的对象。你想要一个例子吗?
    • 我已经有了返回 IMultipleResult 的代码,并使用 IMultipleResult.GetResult().ToList() 将单独的结果从中提取并放入它们自己的 List 中。还有比这更多的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2019-03-06
    相关资源
    最近更新 更多