![](/img/trans.png)
[英]Entity Framework v4 - The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects
[英]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.