所以我有一個帖子和標籤類,應該是很多。但我無法獲得任何標籤顯示。如何爲帖子實現標籤?
Post類
public class Post
{
public Post()
{
this.Tags = new List<Tag>();
}
public int PostID { get; set; }
public string Title { get; set; }
public DateTime DateTime { get; set; }
public string Body { get; set; }
public virtual IList<Tag> Tags { get; set; }
}
標籤類:
[HttpPost]
public ActionResult Create([Bind(Include = "Title,Body,Tags")] BlogInputModel input)
{
if (ModelState.IsValid)
{
Post post = new Post
{
Title = input.Title,
Body = input.Body,
DateTime = DateTime.Now
};
post.Tags.Clear();
foreach (string tag in input.Tags.Split(' '))
{
post.Tags.Add(GetTag(tag));
}
db.Posts.Add(post);
db.SaveChanges();
return RedirectToAction("Details", new { id = post.PostID });
}
return RedirectToAction("Index");
}
public ActionResult Details(int id)
{
var post = db.Posts.Where(x => x.PostID == id).First();
return View(post);
}
private Tag GetTag(string tagName)
{
return db.Tags.Where(x => x.Name == tagName).FirstOrDefault() ?? new Tag { Name = tagName };
}
而且這裏我控制器
public class Tag
{
public int TagID { get; set; }
public string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
而且部分是我的上下文類
public class BlogContext : DbContext
{
public BlogContext() : base("BlogContext")
{
}
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.HasMany(t => t.Tags)
.WithMany(p => p.Posts)
.Map(m => m.MapLeftKey("PostID")
.MapRightKey("TagID")
.ToTable("PostTags"));
}
}
我收到異常的任何方式,我嘗試修復它,沒有任何工作。 EF不應該只創建PostTags表並且所有東西都應該連接?
或者我必須擺脫modelBuilder代碼並創建我自己的第三個表格,但如果是這樣,我如何將標籤的ID傳遞給標籤?
異常的消息是什麼? – CodeNotFound
各種不同的事情,因爲我不斷變化的東西。只是試圖找出我的邏輯是否正確 –
如果您只是測試EF,請確保在發佈問題之前遇到問題SO – CodeNotFound