我打算让用户为博客帖子分配几个标签(就像stackoverflow关于标签和问题一样),这是我的帖子模型
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public string Summary { get; set; }
public DateTime CreationDate { get; set; }
public string UrlSlug { get; set; }
public string Picture { get; set; }
public int TagId { get; set; }
public virtual Tag Tag { get; set; }
}
这是标签
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreationDate { get; set; }
public string TagSlug { get; set; }
}
当我想创建一个帖子时,我只需在下拉列表中获取所有标签的列表,并在后期操作中获取它的ID,等等等等等等!那么为了能够为帖子分配几个标签应该如何改变我的模型呢?
答案 0 :(得分:0)
听起来你想要与你的Posts
和Tags
建立多人:多人关系,因为Post
可以有很多Tags
和一个{{1 }}将应用于许多Tag
。
这意味着您至少希望在Posts
对象上存储关联的Tags
的集合。或者,您可能还希望在Post
对象上存储关联的Posts
的集合。
因此,将单个Tag
更改为集合:
Tag
如果您正在进行代码优先开发,Entity Framework应该能够使用默认的约定/映射来整理您的数据库结构和表。
如果您已有现有数据库,则可能必须执行一些显式映射,例如
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public string Summary { get; set; }
public DateTime CreationDate { get; set; }
public string UrlSlug { get; set; }
public string Picture { get; set; }
// Navigation property
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreationDate { get; set; }
public string TagSlug { get; set; }
// Navigation property (optional)
public virtual ICollection<Post> Posts { get; set; }
}