【发布时间】:2010-12-28 09:50:39
【问题描述】:
在我的应用程序中,我有 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();
这很好用,但如果有一种方法可以在使用新关键字时不提交数据更改,我会很感兴趣。该关键字可以有一个临时 ID 吗?
非常感谢,
拉杜
【问题讨论】:
标签: .net linq performance linq-to-sql