【问题标题】:ASP.NET MVC Deep Model Relationship? MVC5ASP.NET MVC 深层模型关系? MVC5
【发布时间】:2014-10-08 13:15:12
【问题描述】:

学术示例:简单的标记机制 - asp.net / MVC5

型号:

// post
public class Post
{
    public Int64 Id { get; set; }
    public string Title { get; set; }
    public virtual IList<TagMap> TagMaps { get; set; } 
}

// tag
public class Tag
{
    public Int64 Id { get; set; }
    public string Name { get; set; }
    public virtual Post Post { get; set; }
}

// tagmap
public class TagMap
{
    public Int64 Id { get; set; }
    public virtual Post Post { get; set; }
    public virtual Tag Tag { get; set; }
}

TagTable 包含单个标记词(无重复)。 TagMap 表示 Post 和(许多)Tags 之间的关系。

我认为这个简单的设计应该可行吗?但我不知道如何设置视图以编辑和创建标签(不是标签图)。

任何帮助都会很好。

【问题讨论】:

    标签: asp.net asp.net-mvc model asp.net-mvc-5 entity-relationship


    【解决方案1】:

    您似乎正在实现一对多的关系。 (一篇文章,很多标签)..

    你可以用这个..

    public class Post
    {
        [Key]
        public Int64 PostId { get; set; }
        public string Title { get; set; }
    }
    
    public class Tag
    {
        [Key]
        public Int64 TagId { get; set; }
        public string Name { get; set; }
    }
    
    public class TagMap
    {
        public Int64 PostId { get; set; }
        public Int64 TagId { get; set; }
    
        [ForiegnKey("PostId")]
        public virtual Post Post { get; set; }
        [ForiegnKey("TagId")]
        public virtual Tag Tag { get; set; }
    }
    

    请注意,您不需要对两个表进行延迟加载,因为您实际上将它引用到 tagmap 表。

    【讨论】:

      【解决方案2】:

      好的,听起来不错。

      我将模型更改为:

      public class Post
      {
          [Key]
          public Int64 Id { get; set; }
          public string Title { get; set; }
          public IList<TagMap> TagMaps { get; set; }
      }
      

      在postscontroller的index方法中:

      var posts = db.Posts.Include(m => m.TagMaps.Select(n => n.Tag));
      

      还有观点:

      @for (int i = 0; i < item.TagMaps.Count; i++)
       {
         @Html.Raw(item.TagMaps[i].Tag.Name);
       }   
      

      这就像一个魅力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        相关资源
        最近更新 更多