我是新來實體框架並試圖將以下模型存儲到數據庫。我看過this教程。我想先使用代碼將以下模型存儲到數據庫,但我無法獲得它存儲此遞歸結構。它只存儲初始根節點。如何用實體框架5.0存儲遞歸模型
我的模型看起來是這樣的:
public abstract class Node : INode
{
public int NodeId { get; set; }
public Node()
{
Nodes = new List<INode>();
}
public INode ParentNode { get; set; }
public List<INode> Nodes { get; private set; }
public string Name { get; set; }
}
和派生亞型:
public class Module : Node, IModule
{
}
public class Location: Node, ILocation
{
}
的接口是這些:
public interface INode
{
INode ParentNode { get; set; }
List<INode> Nodes { get; }
string Name { get; set; }
}
public interface IModule : INode
{
}
public interface ILocation : INode
{
}
這是我的DbContext:
public class SqlEntityContext : DbContext
{
public DbSet<Node> Nodes { get; set; }
}
然後,我創建一個父模塊節點的模型,其中包含兩個位置節點。如果我嘗試用此代碼存儲它
using (var db = new SqlEntityContext())
{
db.SqlSystemNodes.Add(Root as SqlSystemNode);
db.SaveChanges();
}
只有根節點被存儲到數據庫。我試圖給每個亞型自己的鑰匙,但沒有成功。我怎麼能夠將這個模型存儲到數據庫,有什麼想法?它甚至有可能嗎?
您是否嘗試過將所有子節點過多的情況下?看起來您沒有爲您的Node Parent添加外鍵,這使EF很難識別您想要的結果映射。檢查您創建的模式,如果它以您想要的方式創建。 – UrbanEsc 2014-11-04 15:22:28