0
我有2個控制器和存儲庫,Gifts和Registries。禮物可以有一個註冊表,當我嘗試創建一個新的禮物時,我收到錯誤「一個實體對象不能被多個IEntityChangeTracker實例引用」。保存相關實體時,「一個實體對象不能被IEntityChangeTracker的多個實例引用」
的禮物具有以下屬性:
public class Gift
{
public int GiftId { get; set; }
public string Name { get; set; }
public Registry Registry { get; set; }
}
我的代碼添加禮品如下:
在控制器:
private IGiftRepository _giftRepository;
private IAccountRepository _accountRepository;
public GiftController()
{
this._giftRepository = new GiftRepository(new ApplicationDbContext());
this._accountRepository = new AccountRepository(new ApplicationDbContext());
}
public GiftController(IGiftRepository giftRepository)
{
this._giftRepository = giftRepository;
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(Gift gift)
{
if (ModelState.IsValid)
{
Registry registry = _accountRepository.GetLoggedInRegistry(User.Identity.GetUserId());
gift.Registry = registry;
await _giftRepository.AddGiftAsync(gift);
return RedirectToAction("Home", "Admin");
}
return View(gift);
}
這裏是在代碼repository:
public async Task<bool> AddGiftAsync(Gift gift)
{
try
{
_context.Gifts.Add(gift);
await _context.SaveChangesAsync();
}
catch (Exception)
{
return false;
}
return true;
}
在_content.Gifts.Add(禮物)我得到以下錯誤:「一個實體對象不能被多個IEntityChangeTracker實例引用。」我意識到是由於我配置了我的上下文的方式,但我不確定我需要做些什麼改變才能實現這個工作。