C# EF多对多现有对象

C# EF多对多现有对象,c#,entity-framework,foreign-keys,C#,Entity Framework,Foreign Keys,我有以下数据库表: 文件 国家/地区(从未添加到) 文档语言 DocumentLanguage是国家/地区和仅包含ID的文档之间的链接表。实体设计器(正确)将此添加为导航属性 我的代码如下: public void IdentifyLanguages(List<Country> languages) { foreach (Country c in languages) { foreach (var languageId

我有以下数据库表:

文件 国家/地区(从未添加到) 文档语言

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;
                }

            }
        }
    }
我得到以下错误:

仅当EntityKey属性的当前值为null时,才能设置该属性


可能有一个非常明显的解决方案,我已经尝试使用附加,使用存根对象,但必须有一个简单的解决方案,因为我确信我不是第一个有这个要求的人

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

添加对象时它是新的,如果我删除对IdentifyLanguages()的调用,它就会工作,它只是添加导致问题的语言。
context.Document.AddObject(_document);
context.SaveChanges();