使用Entity Framework添加外键关系

时间:2012-02-28 15:57:12

标签: c# entity-framework-4 foreign-keys

此问题与我之前提出的问题类似。当我使用实体框架(EF)查询数据时,我总是使用MergeOption.NoTracking选项,因为我最终获取了我生成的EF对象并将它们映射到视图模型,这些模型具有在属性上修饰的可爱属性以强制执行验证等等

我正在尝试使用EF添加外键关系,但是无论何时我都会遇到以下异常:

The object being attached to the source object is not attached to the same ObjectContext as the source object

这是我的代码:

    public static void UpdateDownloadFileVersion(DownloadFile downloadFile, int[] selectedVersions) {
        using (SupportEntity supportContext = new SupportEntity()) {
            supportContext.DownloadFiles.Attach(downloadFile);

            var productVersionIdsToAdd = (from v in selectedVersions
                                          where (downloadFile.ProductVersions.Any(pv => pv.Id == v) == false)
                                          select v).ToList();

            foreach (var productVersionId in productVersionIdsToAdd) {
                var productVersion = new ProductVersion() { Id = productVersionId };
                downloadFile.ProductVersions.Attach(productVersion); //Exception happens here.
                downloadFile.ProductVersions.Add(productVersion);
            }

            supportContext.SaveChanges();
        }
    }

1 个答案:

答案 0 :(得分:2)

Stub Entities非常有用......

var productVersion = new ProductVersion() { Id = productVersionId };  
supportContext.AttachTo("ProductVersions", productVersion); 

这是一个很好的article

在上述情况下,当附加productVersion被分配给product versions'实体时,productversion实体会附加到上下文,并附加EntityState=Added。整个图表将在上下文中。