繁体   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