Обновление
Проверка Служба StackOverflow OData это в точности как сообщения / почтовые теги / теги ... Как я могу повторить это, пожалуйста?
Итак, у меня есть простой класс BlogPost - ничего особенного. Просто сообщение в блоге. Теперь я хочу добавить теги для этого класса. Точно так же, как теги для вопроса StackOverflow - 5 строк, разделенных пробелом. А затем сохраните эти данные в моей базе данных Sql Server 2008 с помощью Entity Framework 4.
Итак, сначала я подумал, что могу просто добавить ICollection<string> Tags { get; set; }
или StringCollection Tags { get; set; }
, а для базы данных просто создайте новую таблицу с именем Tags
, которая является внешним ключом для BlogPost, и поле VarChar(100) Tag
.
Но потом я подумал, что если я сделаю это, у меня будет просто много дублированных тегов в этой таблице базы данных. Возможно ли иметь две таблицы, может быть.
Где все теги являются уникальными экземплярами.
Теперь это легко моделировать в БД, но я понятия не имею, как это сделать в EF? Это хороший способ моделирования? Это то, что делается здесь, на SO?
Мне действительно нравится иметь ICollection<string> Tags { get; set; }
(это красиво и чисто), но я не уверен, как это сделать И иметь уникальные теги в базе данных, используя EF в качестве моего доступа к данным.
Я просто не знаю, как добавить некоторые теги для поста блога и убедиться, что теги уникальны, но все еще ссылаются на пост блога.
Например, если это является обязанностью базы данных, поэтому, когда я пытаюсь сохранить пост в блоге, тогда я однозначно разбираюсь с тегами ... проверяя, существуют ли они сначала, а затем либо вставляя, либо обновляя уникальный тег. и использовать этот ссылочный идентификатор в таблице BlogPostsToTags? Что происходит с условиями гонки? мне нужно использовать транзакции для этого ... и если так ... как насчет производительности чтения, если таблица заблокирована?