2010-12-28 5 views
0

보다 효율적인 SQL 구문 링크 테이블에 내가 3 개 테이블이있다. 문제는 VideoKeywords 테이블을 효율적으로 구성하는 방법입니다. 꽤 잘Linq에 내 응용 프로그램에서

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가 있습니까?

고마워,

라두

답변

0

한 가지 방법은 메모리에 키워드지도를 캐시하는 것입니다. 그렇게하면 일반적으로 ID를 얻기 위해 db로 왕복 할 필요가 없습니다 (누락에 대해서만).

한 번의 왕복으로 업데이트를 수행하려면 저장된 proc로 추상화 할 수 있습니다.

관련 문제