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