簡體   English   中英

表示SQL Server數據庫(ASP.NET MVC)中的路徑

[英]Representing paths in SQL Server database (ASP.NET MVC)

我正在ASP.NET MVC中編寫一個小型書簽工具,每個書簽都存儲在一個文件夾中。 我目前通過簡單地將路徑作為字符串存儲在數據庫中來表示這一點,但是當開始按文件夾和列表文件夾顯示項目時,這似乎是一種有效的方法。

有沒有內置的方式來表示然后操縱數據庫中的路徑? 還是公認的最佳實踐?

如果您正在談論諸如文件系統路徑之類的路徑,那么您可能要開始考慮一棵樹和一個層次系統。

本質上,您將具有一個名為Category或類似名稱的形式的附加表,該表可以使用ParentId自引用。 借助此方法,您可以遍歷大類,直到沒有父項或子項,這取決於查詢的方向,並使用查詢的結果構建路徑。 如果您的書簽的類別超過1個,那么這當然會很難看。 您將需要對此進行一些其他驗證。

以下代碼是我自己用過的一篇網上文章的摘要,但我再次找不到該文章,將其引用為源。

public class Category
{
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public int? ParentId { get; set; }
    public virtual Category Parent { get; set; }
    public virtual ICollection<Category> Children { get; set; }
}

public class CategoryMapping : EntityTypeConfiguration<Category> 
{
    public CategoryMapping() 
    {
        HasKey(x => x.CategoryId);

        Property(x => x.CategoryId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        Property(x => x.Name)
            .IsRequired()
            .HasMaxLength(255);

        //Parent is optional, because root node has no parent
        HasOptional(x => x.Parent)
            .WithMany(x => x.Children)
            .HasForeignKey(x => x.ParentId)
            .WillCascadeOnDelete(false);
    }
}

參考文獻:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM