2011-11-05 47 views
0

我有两个实体,分别称为英语和德语。他们都有领域ID,有声。LINQ:将新数据集插入与现有实体的多对多关系

要翻译彼此连接我创建,其保持所述第一实体和欧体第一发生在该单元的的ID表GermanEnglish。

在一次插入一个欧体具有多个翻译(在提交之前对GermanEnglish对象的更改)工作正常。 当我想添加一个翻译到现有的vocable,我得到一个错误,这个值已经在数据库中(我定义的Vocable字段为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(); 

...但加载方法不可用。 在所有的问题和教程中,我只看到使用添加方法的人。

我的代码有错误吗?或者这种方法不再可用? (如添加方法,被重命名为InsertOnSubmit)

+0

你想使:一个英语有很多德语,一个德语有很多英语? – Saint

+0

是的,这是我想要的 – wullxz

回答

1

据我了解你的例子EnglishGerman是有EnglishGermanID, Unit, EnglishID, GermanID

所以你不能添加德国人名单。你只能指定germanEnglish.German = german(在这种情况下,必须只有一个对象)...我认为是这样,但林小新我很小

+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

相关问题