0

我似乎无法找到答案,所以希望有人可以提供帮助。我有以下模型,可以嵌套在同一模型的其他项目中,有效地创建一个 n 层数据集。我的模型是这样写的:

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,如果是,我该怎么做?

4

1 回答 1

0

我会使用Fluent API来配置它。它比在实体属性上使用属性要灵活得多。它看起来像这样。

 this.HasOptional(l => l.ParentResource)
  .WithMany(p => p.Children)
  .HasForeignKey(l => l.ParentId);

从您的模型中不清楚的是父母是否可以有多个孩子。假设有多个孩子,您需要将这样的属性添加到您的模型中。

public virtual List<Resource> Children {get; set;}
于 2013-02-01T20:09:52.153 回答