Линк к SQL построить таблицу ссылок более эффективным - PullRequest
0 голосов
/ 28 декабря 2010

В моем приложении у меня есть 3 таблицы: видео, ключевые слова и VideoKeywords

Я использую их для индексации видео по ключевым словам. Проблема в том, как эффективно построить таблицу VideoKeywords.

Я делаю следующий алгоритм:

foreach (Video video in videosToIndex)
{
   Dictionary<string, int> words = Util.GetDistinctWordsInName(video.Name);

   video.VideoKeywords.Clear();
   foreach (string word in words.Keys)
   {
     int keywordId = keywords.Where(x => x.Name == word).Select(x =>   x.ID).FirstOrDefault();

    if (keywordId == 0)
    {
         Keyword kw = new Keyword() { Name = word };
         dc.Keywords.InsertOnSubmit(kw);
         dc.SubmitChanges();
         keywordId = kw.ID;
         keywords.Add(kw);
    }

    video.VideoKeywords.Add(new VideoKeyword() { VideoID = video.ID, KeywordID = keywordId, Occurrences = words[word] });
    }

     video.IndexedDateTime = DateTime.Now;
   }
   dc.SubmitChanges();

Это работает довольно хорошо, но мне будет интересно, если есть способ сделать это без отправки изменений данных при наличии нового ключевого слова. Может ли это ключевое слово иметь временный идентификатор?

Большое спасибо,

1012 * Radu *

1 Ответ

0 голосов
/ 28 декабря 2010

Один из подходов - кэшировать карту ключевых слов в памяти.Таким образом, вам обычно не нужно возвращаться в базу данных для получения идентификатора (только для пропусков).

Если вы хотите выполнить обновление за один раз, вы можете абстрагировать его в сохраненный процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...