表示SQL Server数据库中的路径(ASP.净MVC)
本文关键字:ASP MVC 路径 SQL Server 数据库 表示 | 更新日期: 2023-09-27 18:06:10
我正在用ASP编写一个小书签工具。每个书签都存储在一个文件夹中。我目前通过简单地将路径作为字符串存储在数据库中来表示这一点,但是当涉及到开始按文件夹和列表文件夹显示项目时,这似乎是一种有效的方法。
是否有任何内置的方式来表示,然后在数据库中操作路径?还是公认的最佳实践?
如果您谈论的是像文件系统路径那样的路径,那么您可能需要开始考虑树和分层系统。
本质上,您将有一个名为Category或其他形式的额外表,它使用ParentId
进行自引用。这样,您就可以根据查询的方向迭代您的类别,直到没有父项或子项,并使用查询的结果构建路径。如果你的书签有不止一个分类,这当然会很难看。您将需要在其中进行一些额外的验证。
下面的代码实际上是来自于网上的一篇文章,这是我自己用的,但是我找不到这篇文章,引用它作为来源。
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);
}
}
引用:
- http://sqllessons.com/categories.html
- http://www.sitepoint.com/hierarchical-data-database/
- 实体框架代码第一自引用父/子与有效载荷