2011-11-05 2 views
0

영어와 독일어라는 두 개의 엔티티가 있습니다. 둘 다 필드 ID, Vocable을가집니다. 서로 번역 연결LINQ : 기존 엔티티와 다 대다 관계로 새 데이터 세트 삽입

는 I는를 제출하기 전에 (제 실체 발음 할 수있는이 먼저 발생 장치의 양자의 ID를 가지고 테이블 GermanEnglish.

한번에 여러 번역 한 발음 할 수있는 삽입 만들어 GermanEnglish 개체로의 변경)이 정상적으로 작동합니다. 번역 할 때 기존의 vocable, 나는이 값이 이미 데이터베이스에 오류가 발생했습니다 (나는 Vocable-field를 UNIQUE로 정의했습니다).

나는 다음과 같은 시도 :

using (VokabeltrainerDBDataContext context = new VokabeltrainerDBDataContext()) 
var german = from voc in context.German 
      where voc.GermanWord.Equals(txtVocable.Text) 
      select voc; 

// if the german word exists in the database... 
if (german.Any()) 
{ 
    foreach (English englishWord in englishTranslations) 
    { 
     var germanEnglish = new GermanEnglish(); 
     germanEnglish.English = englishWord; 
     germanEnglish.Unit = unit; 
     germanEnglish.German.Add(german); // add-method not available! 
     context.GermanEnglish.InsertOnSubmit(germanEnglish); 
    } 
} else {...} 
context.SubmitChanges(); 

...하지만 추가 방법은 사용할 수 없습니다. 모든 질문과 자습서에서 나는 add-method를 사용하는 사람들만을 봅니다.

코드에 오류가 있습니까? 아니면이 방법을 사용할 수 없습니까? (InsertOnSubmit으로 이름이 변경된 Add-method처럼) ​​

+0

하나의 영어에는 많은 독일어가 있고 하나의 독일어에는 많은 것이 있습니다. 영어? – Saint

+0

예, 이것이 내가 원하는 것입니다. – wullxz

답변

1

예제를 이해하면 EnglishGermanEnglishGermanID, Unit, EnglishID, GermanID 인 테이블입니까?

독일어 목록을 추가 할 수 없습니다. germanEnglish.German = german 만 할당 할 수 있습니다. (이 경우에는 하나의 객체 여야합니다.) 저는 그렇게 생각합니다. 그러나 linq에 조금 새로운 것 같습니다.

+0

다른 방법으로 시도해 보았습니다. 'German germanWord = context.German.Single (g => g.GermanWord == txtVocable.Text); germanWord.GermanEnglish.Add (germanEnglish); ' 현재이 문제를 극복하려고합니다. – wullxz

+0

@wullxz 그럼 내 문제에 대해 어떻게 생각하세요? http://stackoverflow.com/questions/8030192/insert-into-many-to-many-relationship-tables – Saint

+0

죄송합니다. Linq도 처음이지만 Linq가 모든 부분을 묶었다고 읽었습니다. 당신의 엔티티 중 하나에서'InsertOnSubmit()'을 호출하고 그 후에'SubmitChanges()'를 호출했을 때 당신의 관련 데이터를 데이터베이스에 저장합니다. – wullxz

관련 문제