EF 多对多现有对象

本文关键字:对象 EF | 更新日期: 2023-09-27 18:35:25

我有以下数据库表:

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

文档

语言是国家/地区和文档之间的链接表,仅包含 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();

我收到以下错误:

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

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

EF 多对多现有对象

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