【发布时间】:2014-10-06 04:57:43
【问题描述】:
我有 2 个控制器和存储库、礼物和注册表。礼物可以有一个注册表,当我尝试创建一个新礼物时,我收到错误“一个实体对象不能被多个 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);
}
这是存储库中的代码:
public async Task<bool> AddGiftAsync(Gift gift)
{
try
{
_context.Gifts.Add(gift);
await _context.SaveChangesAsync();
}
catch (Exception)
{
return false;
}
return true;
}
在 _content.Gifts.Add(gift) 我收到以下错误:“一个实体对象不能被多个 IEntityChangeTracker 实例引用。”我意识到这是由于我配置上下文的方式,但我不确定我需要进行哪些更改才能使其正常工作。
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework