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