我无法从extern设置导航属性

时间:2016-12-12 10:13:59

标签: .net entity-framework

我有一个实体

public partial class FUNCTION_METADATA
{
    public FUNCTION_METADATA()
    {
        this.VALUE_METADATA = new HashSet<VALUE_METADATA>();
    }

    public int ID_FUNCTION_METADATA { get; set; }

    public virtual ICollection<VALUE_METADATA> VALUE_METADATA { get; set; }
}

这个ICollection为VALUE_METADATA。

我尝试使用Include-Statement加载它,但我需要15秒。载入。 所以我加载了整个FUNCTION_METADATA,并在一个单独的加载中整个VALUE_METADATA,并希望在代码中设置集合 - 需要8秒。 但导航属性不起作用。在调试器中,我看到了ObjectDisposedException。 如何在不使用ObjectExposedException的情况下从代码中设置集合?

这是带有include的代码 - 一切运行良好:

LoadAllItemsToCache<FUNCTION_METADATA>(includeProperties: nameof(VALUE_METADATA));

这是带有两个单独加载的代码和一些Linq - 使用Value_METADATA集合不起作用:

LoadAllItemsToCache<FUNCTION_METADATA>();
LoadAllItemsToCache<VALUE_METADATA>();

var allValueMetadata = GetAllItemsFromCache<VALUE_METADATA>().GroupBy(dvm => dvm.ID_FUNCTION_METADATA).ToDictionary(grp => grp.Key, grp => grp.ToList());
var allFunctionMetadata = GetAllItemsFromCache<FUNCTION_METADATA>();

foreach (var functionMetadata in allFunctionMetadata)
{
    if (allValueMetadata.ContainsKey(functionMetadata.ID_FUNCTION_METADATA))
    {
        functionMetadata.VALUE_METADATA = new HashSet<VALUE_METADATA>(allValueMetadata[functionMetadata.ID_FUNCTION_METADATA]);
    }
}

函数LoadAllItemsToCache和GetAllItemsFromCache是​​我的DBRepository的一部分。

我理解ObjectExposedException的原因,但我不知道它为什么会出现在这里。为什么实体试图在上下文中获取集合?

0 个答案:

没有答案