В моем приложении у меня есть 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 *