繁体   English   中英

无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象Entity Framework

[英]The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects Entity Framework

我有两个从数据库生成的类,它们通过多对多关系相互交互。 当我想在多对多关系表中添加记录时,我得到以下错误:无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。

实体框架模型图如下:

在此输入图像描述

添加对象的函数,并与DataContext

public async Task AddInterakcijaAsync(Korisnik korisnik, Projekat projekat)
{
        using (ExtentBazaEntities _context = new ExtentBazaEntities())
        {
            _context.Korisnik.FirstOrDefault(a => a.KorisnickoIme == korisnik.KorisnickoIme).Projekat.Add(projekat);
            await _context.SaveChangesAsync();
        }
}

但是,当我调用此函数时,弹出错误的地方是下一个函数的调用:

AddInterakcijaAsync(k, trenutniProjekat);

避免将实体发送到DbContext的边界之外。 传递的Korisniko和Projekat是从DbContext A加载的。该方法启动DbContext B并加载匹配的Korisniko,但是它试图将Projekat与DbContext A关联,它不知道什么,但将其识别为由另一个上下文跟踪的EF实体。

我建议更新您的方法签名以仅接受ID,因为方法调用封装了DbContext来处理插入。

public async Task AddInterakcijaAsync(int korisnikoIme, int projekatIme)
{
    using (ExtentBazaEntities _context = new ExtentBazaEntities())
    {
        var korisniko = _context.Korisnik.Single(a => a.KorisnickoIme == korisnickoIme)
        var projekat = _context.Projekat.Single(a => a.ProjekatIme == projekatIme);
        korisniko.Projekat.Add(projekat);
        await _context.SaveChangesAsync();
    }
}

猜测ID名称/类型。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM