0

學術示例:簡單標記機制 - asp.net/MVC5ASP.NET MVC深層模型關係? 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包含單tagwords(無重複)。 TagMap表示Post和(許多)標籤之間的關係。

我認爲這個簡單的設計應該工作與否?但我不知道如何設置視圖來編輯和創建標籤(而不是標籤圖)。

任何幫助將是很好的。

回答

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表。

0

好聽起來不錯。

我改變該模型:

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

在postscontroller的索引方法:

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); 
} 

這是工作像迷人。