我正在编写一个基于EF的网站,该网站将有许多Articles
(包含id,作者,日期,标题等属性),每个网站都是Category
的成员(10种可能)每个类别都有id,标题,相关图标等)
每篇文章也可以有多个"标签"。就像适用于SO问题的问号标签一样。
例如,文章ID 1具有:
Category
表的外键,其中ID 2为"年度回顾"类别)文章ID 2("我今年发现的50次生活黑客")
从上面可以看到9' distinct' 2016
和Lists
适用于这两个文章的标签,其他标签每个都会显示一次。
随着大量文章的出现,标签越来越多。
这仅仅是Article
与Tag
的多对多关系的情况,还是有一些更自然/惯用的方式来表示使用EF?
我想做的主要事情是:
Lists (2)
,Trends (1)
我 需要:
我需要知道的事情:
Tag
表和ArticleTag
表(ArticleID
,TagID
)或其他什么?)< / LI>
article
- tag
关系需要做什么?我的背景是数据库,所以我了解FK和链接表等,但我在EF方面苦苦挣扎。
请注意我的要求:这是我为自己创建的网站,所以我已经了解了这些要求。我不会遇到用户&#34;用户&#34;要求能够保持标签的顺序,例如。
答案 0 :(得分:2)
您可以添加2个Tables,Tag和TagRelation,Tag负责保存TagNames,例如#Test #AnotherTest,确保无法插入相同的tagName。 在TagRelation中,你应该保留TagId(标签表的Fk)和Guid(文章的Fk,页面,你的名字)。 在此体系结构中,每个需要Tag的表都必须在搜索ex时具有Guid类型的字段(SQL数据类型中的uniqueidentifier)。您只需在Guid字段上使用TagRelation设置内部联接
public class Tag
{
public long Id { get; set; }
public string TagName { get; set; }
}
public class TagRelation
{
public long Id { get; set; }
public long TagId { get; set; }
public Guid FkUniqueGuid { get; set; }
}
public class Article
{
public long Id { get; set; }
public Guid UniqueGuid { get; set; }
//And another fields
}