2011-06-27 49 views
1
var entity = _db.Connections.Where(x => x.Id == Id).FirstOrDefault(); 

Connections在其中有另一个List<Messages>实体框架4.1无法从数据库获取记录

如果它不止一次被调用,它不会从数据库中返回List<Messages>。如果我调试代码,如果我调用Take(_count).ToArray(),则会检索到数据,但仍不会检索到List<Messages>

所以我简单的问题是我如何强制实体框架去从数据库中获取ACTUAL数据?

谢谢,任何提示的赞赏

public interface Connection 
{ 
    public int Id { get; set; } 
    public virtual List<Messages> Messages { get; set; } 
} 
+0

不知道我是否明白:你的对象'entity'是从DB加载的,但是这个对象中的collection属性'list'是null,对吧?只有当您第二次查询并且第一次运作时,您才会遇到此问题?你使用延迟加载?如果你可以在里面显示'''''''''''''Connection'类,那么可能会更容易理解。 – Slauma

+0

我编辑我的问题 – Stacker

+0

我正在做正常的一对多关系,问题是我第二次查询来自连接对象的消息,消息不会从数据库中检索, – Stacker

回答

1

您需要将您的信息属性更改为

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

之前,从拉它时,回实体框架实际上会填充它数据库。

+0

对于添加虚拟记录实际上并没有使它在从数据库中拉回时填充它。虚拟关键字只是实现延迟加载(默认情况下在EF中)所必需的。只有在您对其进行调用并进行了其他查询之后,该属性才会被填充。 – OpticalDelusion