2012-05-24 79 views
0

我有以下的数据库表:EF多对多Exisiting对象

文件 国家(从未加入) DocumentLanguage

DocumentLanguage是国家,只含ID的文件之间的链接表。实体设计器(正确)添加这个导航属性。

我的代码如下:

public void IdentifyLanguages(List<Country> languages) 
    { 
     foreach (Country c in languages) 
     { 
      foreach (var languageIdentifier in c.LanguageIdentifiers) 
      { 
       if (document.DocumentText.ToLower().Contains(languageIdentifier.LanguageIdentifier1.ToLower())) 
       {      
        document.Countries.Add(c); 
        break; 
       } 

      } 
     } 
    } 

,后来保存对象:

context.Document.AddObject(_document); 
context.SaveChanges(); 

,我得到以下错误:

的的EntityKey属性只能设置在该属性的当前值为null。

可能有一个非常明显的解决方法,我尝试过使用附件,使用存根对象,但必须有一个简单的解决方案,因为我确定我不是第一个拥有这个需求的人!

回答

0

当您使用AddObject保存对象时,您的文档是否已经存在于您的数据库中? AddObject仅用于添加新对象,而不更新现有对象

+0

添加新对象时,如果我删除了对IdentifyLanguages()的调用,它只是添加导致问题的语言。 – Ketchup