附加参考导航属性 - Nopcommerce

时间:2014-03-09 21:46:18

标签: c# entity-framework nopcommerce

此问题专门针对EMS nopcommerce。当我查看EFRepository中的EF实现

https://nopcommerce.codeplex.com/SourceControl/latest#src/Libraries/Nop.Data/EfRepository.cs

我看到有一个属性

    protected virtual IDbSet<T> Entities
    {
        get
        {
            if (_entities == null)
                _entities = _context.Set<T>();
            return _entities;
        }
    }

我可以看到实体正在设置为上下文。我能看到的是如何设置参考导航属性?任何外来关系都不会被设置为上下文对吗??

2 个答案:

答案 0 :(得分:0)

这个构造只是存储库核心成员的惰性初始化:_entitiesDbSet<T>。无论_entities是在那里初始化还是在存储库的构造函数中都无关紧要。它只是确保Entities永远不会返回null。 尚未设置其他对象。

在对Entities执行LINQ查询之前,不是实体化并附加到上下文的实体。例如

var rep = new EfRepository<Customer>();
var customers = rep.Entities.Include(c => c.Job).ToList();

现在 Customer和他们的Job已从数据库加载并附加到上下文。

答案 1 :(得分:0)

找到了答案!

这是因为并非我的所有属性都标记为虚拟,而我使用的是List而不是Collection。

:)