[英]How to store a recursive model with entity framework 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();
}
只有根節點被存儲到數據庫中。 我試圖給每個子類型自己的密鑰,但沒有成功。 有什么想法,我如何能夠將該模型存儲到數據庫中? 可能嗎?
您是否在數據庫上下文初始化程序中定義了父子關系。
您的初始化程序應具有以下功能:
modelBuilder.Entity<Node>()
.HasMany(o => o.Nodes)
.WithOptional() // or .WithRequired()
.Map(m => m.MapKey("ParentNodeId"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.