我有两个从数据库生成的类,它们通过多对多关系相互交互。当我想在多对多关系表中添加一条记录时,出现以下错误:两个对象之间的关系无法定义,因为它们被附加到不同的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);
答案 0 :(得分:0)
避免在DbContext边界之外发送实体。从DbContext A加载了传入的Korisniko和Projekat。该方法启动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名称/类型。 :)