实体框架:使用MultipleActiveResultSets的替代方案

时间:2014-03-25 22:04:16

标签: entity-framework asp.net-web-api eager-loading

我正在使用ASP.NET WebAPI并遇到了应该通过WebAPI控制器进行通信的嵌套模型的问题:

实体“债券,股票等”每个都有一个实体列表“价格”。在服务器端,我使用以下类来匹配此要求..

public class Bond : BaseAsset
{
    public int ID { get; set; }
    public string Name { get; set; }

    public virtual List<Price> Prices { get; set; }
}

这导致表格“价格”有一个债券,股票等列,如果债券附有价格,其债券外键列中的一个条目。

我最初得到的错误是

  

已经有一个与此命令关联的开放DataReader

我修改了连接字符串以允许MultipleActiveResultSets。

但是,我觉得在处理嵌套模型时必须有更好的选择或至少是替代方案。例如,当遇到这样的问题时,它是否是模型设计不良的标志?急切的加载会改变什么吗?

1 个答案:

答案 0 :(得分:2)

火星的另一种替代方法是禁用延迟加载

在你的DbContext

Configuration.LazyLoadingEnabled = false;

加上加载数据时,可以显式加载子表

context.Bonds.Include(b => b.Prices)