[英]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.