Asp.net mvc 3 具有父ID的ASP.Net MVC递归模型
我似乎找不到答案,所以希望有人能帮忙。我有以下模型,可以嵌套在同一模型的其他项中,有效地创建一个n层数据集。我的模型编写如下:Asp.net mvc 3 具有父ID的ASP.Net MVC递归模型,asp.net-mvc-3,recursion,model,ef-code-first,foreign-keys,Asp.net Mvc 3,Recursion,Model,Ef Code First,Foreign Keys,我似乎找不到答案,所以希望有人能帮忙。我有以下模型,可以嵌套在同一模型的其他项中,有效地创建一个n层数据集。我的模型编写如下: public partial class Resource { [Key] public int ResourceID { get; set; } [Display(Name = "Parent Resource")] public int? ParentResourceID { get; set; } public virtual Resource
public partial class Resource
{
[Key]
public int ResourceID { get; set; }
[Display(Name = "Parent Resource")]
public int? ParentResourceID { get; set; }
public virtual Resource ParentResource { get; set;
[Display(Name = "Resource Name")]
public string Name { get; set; }
public bool Deleted { get; set; }
}
ParentResourceID可以设置为NULL,这意味着该项位于级别1上,并且没有父项
但是,当我从分配有父资源的数据库请求项目时,ParentResource对象始终为空
我尝试了许多[ForeignKey]和[InverseProperty]的想法,但没有任何运气
我是否需要映射某个对象,以便模型知道ParentResourceID实际等于虚拟对象的ResourceID,如果需要,我该如何进行映射?我将使用配置。它比在实体属性上使用属性灵活得多。它看起来像这样
this.HasOptional(l => l.ParentResource)
.WithMany(p => p.Children)
.HasForeignKey(l => l.ParentId);
从您的模型中不清楚的是,父对象是否可以有多个子对象。假设有多个子对象,则需要将这样的属性添加到模型中
public virtual List<Resource> Children {get; set;}
公共虚拟列表子项{get;set;}