- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在检查 StackOverflow OData service它与 Posts/PostTags/Tags 完全一样......请问我如何复制它?
所以我有一个名为 BlogPost 的简单类 - 没什么特别的。只是一篇博文。现在,我想为这个类添加标签。与 StackOverflow 问题的 标签 完全一样 - 5 个字符串,以空格分隔。然后使用 Entity Framework 4 将这些数据保存到我的 Sql Server 2008 数据库中。
所以,起初我以为我可以添加一个 ICollection<string> Tags { get; set; }
或 StringCollection Tags { get; set; }
对于数据库,只需要一个名为 Tags
的新表这是 BlogPost 的外键和 VarChar(100) Tag
字段。
但后来我想,如果我这样做,我只会在该数据库表中有很多重复的标签。有可能有两张 table 吗?
标签都是唯一的实例。
现在在数据库中建模很容易,但我不知道如何在 EF 中执行此操作?这是建模的好方法吗?这是 SO 所做的吗?
我真的很喜欢 ICollection<string> Tags { get; set; }
(它很好很干净)但我不确定如何使用 EF 作为我的数据访问在数据库中拥有它并拥有唯一的标签。
我只是不知道如何为博文添加一些标签,并确保标签是唯一的,但仍然引用回博文。
比如,这应该是数据库的责任,所以当我尝试保存博客文章时,我会唯一地处理标签......首先检查它们是否存在,然后插入或更新唯一标签。 . 并在 BlogPostsToTags 表中使用此引用 ID?竞争条件会发生什么?我是否需要为此使用事务...如果需要...如果表被锁定,读取性能如何?
最佳答案
听起来您的方向是正确的。在您的标签表中,您可能需要考虑使用正确大小写和规范化(全部小写,无标点符号)版本的标签,以便您可以将相似的版本映射到相同的标签(例如 StackOverflow、stackoverflow、stack-overflow)。
它与您的博客文章之间的多对多关联将为您提供任何条目上的标签集合。
您可以在 C# 中执行唯一性代码:使用 Hashset<Tag>
以及用于查找新标签的各种集合运算符。您可以通过异常处理和乐观并发异常的适当重试代码一个一个地添加新标记。一旦您在数据库中拥有所有标签,您就可以将您需要的任何新关联添加到博客文章中,并保存这些更改。
当您想将这些相同的标签应用于许多其他表时(除非它们都继承自某些公共(public)基础实体表,在这种情况下很容易),这会变得困难。
关于.net - 如何将 'Tags' 添加到我的简单博客文章类库和存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895807/
我是一名优秀的程序员,十分优秀!