6
我首先使用Entity Framework 4.1代码,并且ASP.NET MVC 3和我正在努力正确地获取自引用设置。我有一个类别类。它必须是自我引用的。当表中的ParentCategoryId为空时,类别可以是父类别。如果一个类别有一个ParentCategoryId值,那么这意味着它属于一个父类别。实体框架4.1检索自引用数据
我在Code Project上跟着这个article。
这里是我的分类等级:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public bool IsActive { get; set; }
public virtual Category ParentCategory { get; set; }
public int? ParentCategoryId { get; set; }
}
我的上下文类:
public class PbeContext : DbContext
{
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
dbModelBuilder.Entity<Category>()
.HasOptional(c => c.ParentCategory)
.WithMany()
.HasForeignKey(p => p.ParentCategoryId);
}
}
不知道上面是正确的吗?
有人能帮我解决这个问题吗?我需要的是,当我通过id查询一个类别时,它必须带回父类别(只在需要时加载)。它也必须加载任何子类别(仅在需要时)。我还没有为子类别的类别类添加一个列表。
上面的问题看起来像检索父类别和子类别的类别?
编辑
这是我找回我的类别:
public Category GetById(int id)
{
return db
.Categories
.Find(id);
}
因为ParentCategory参考可以为空,我将如何在视图中显示这个?我有以下内容:
@Model.ParentCategory.Name
..但不会给出错误,如果该类别没有与其关联的父类别?我如何在视图中显示它?
谢谢。你的查询看起来像什么来检索数据? –
请看我编辑的文章:) –
@Brendan编辑答案 – Eranga