我相當確定這是一個延遲加載問題,但在閱讀了關於延遲加載之後,我仍然沒有更接近解決方案。我已經嘗試過延遲加載和關閉,但沒有成功。當我從數據庫中拉出一個節點時,即使這些對象存在於數據庫中,Parent和Children也是null。如何從數據庫中讀取對象時加載相關對象?
我還添加了'IsReference = true'作爲解決此問題的嘗試。
我讓對象引用的數據成員在一個點上是虛擬的,但是我有代理的序列化問題。
DatabaseContext.cs
public class DatabaseContext : DbContext
{
public DatabaseContext() : base("DatabaseName")
{
Configuration.LazyLoadingEnabled = false;
}
public DbSet<Node> Nodes { get; set; }
}
Node.cs
[DataContract(IsReference = true)]
public partial class Node
{
[DataMember]
public long ID { get; private set; }
[DataMember]
public Node Parent { get; set; }
[DataMember]
public ICollection<Node> Children { get; set; }
}
這看起來不像一個懶加載問題,你的Children集合沒有標記爲虛擬的,所以應該已經實現了節點 - 你確定在DB中有相關的子註釋嗎? – BrokenGlass 2011-06-15 15:55:41
是的。如果我加載所有節點(即var nodes = context.Nodes.ToList()),那麼所有的關係都存在。如果我加載一個節點(即var node = context.Nodes.Find(1)),那麼所有的關係都是空的。當我將它們標記爲虛擬時,它實際上在加載一個節點時起作用,但是我又遇到了序列化問題。我想我可以嘗試解決這些問題,但我寧願有一個解決方案。 – OpticalDelusion 2011-06-15 15:57:48